diff --git a/.ci/build.sh b/.ci/build.sh index e26bbe8bf..d0a4857d9 100755 --- a/.ci/build.sh +++ b/.ci/build.sh @@ -48,6 +48,13 @@ # architecture when invoking build.sh (either standalone or as part of an universal build) # - port and sed are called through sudo to manage dependencies; make sure those are configured # as NOPASSWD in /etc/sudoers if you're doing unattended builds +# - Binaries are ad-hoc signed by default; specify a keychain name in ~/86box-keychain-name.txt +# and password in ~/86box-keychain-password.txt to sign binaries with the first developer +# certificate found inside that keychain. +# - Notarization uses credentials stored in the same keychain used for signing. To save these +# credentials, you must find the keychain's file path, run notarytool store-credentials with +# --keychain pointed at that path, and specify the profile name you passed to notarytool in +# ~/86box-keychain-notarytool.txt # # Define common functions. @@ -126,6 +133,70 @@ save_buildtag() { return $? } +mac_keychain() { + keychain_name=$(cat ~/86box-keychain-name.txt) + if [ -n "$keychain_name" ] + then + echo $keychain_name + security list-keychains -d user -s $(security list-keychains -d user | grep -Fv "/$keychain_name" | sed -e s/\ \*\"//g) "$keychain_name" + security unlock-keychain -p "$(cat ~/86box-keychain-password.txt)" "$keychain_name" + return $? + fi +} +mac_signidentity() { + if keychain_name=$(mac_keychain) + then + if [ -n "$keychain_name" ] + then + cert_name=$(security find-identity -v -p codesigning "$keychain_name" | perl -nle 'print for /([0-9A-F]+) "Developer ID Application: /') + if [ -n "$cert_name" ] + then + echo [-] Using signing certificate [$cert_name] in keychain [$keychain_name] >&2 + echo "--keychain $keychain_name -s $cert_name" + return 0 + else + err="Keychain [$keychain_name] has no developer certificate" + fi + else + err="No keychain specified" + fi + else + err="Keychain [$keychain_name] failed to unlock" + fi + echo [!] $err, falling back to ad-hoc signing >&2 + echo "-s -" +} +mac_notarize() { + if keychain_name=$(mac_keychain) + then + if [ -n "$keychain_name" ] + then + keychain_profile=$(cat ~/86box-keychain-notarytool.txt) + if [ -n "$keychain_profile" ] + then + keychain_path=$(security list-keychains -d user | grep -F "/$keychain_name" | sed -e s/\ \*\"//g) + if [ -n "$keychain_path" ] + then + echo [-] Notarizing with profile [$keychain_profile] in keychain [$keychain_name] + # FIXME: needs a stapling system + xcrun notarytool submit "$1" --keychain-profile "$keychain_profile" --keychain "$keychain_path" --no-wait + return $? + else + err="File path for keychain [$keychain_name] not found" + fi + else + err="No keychain profile specified" + fi + else + err="No keychain specified" + fi + else + err="Keychain [$keychain_name] failed to unlock" + fi + echo [!] $err, skipping notarization + return 1 +} + # Set common variables. project=86Box cwd=$(pwd) @@ -472,12 +543,13 @@ then mv "archive_tmp_universal/$merge_src.app" "$app_bundle_name" # Sign final app bundle. - arch -"$(uname -m)" codesign --force --deep -s - "$app_bundle_name" + arch -"$(uname -m)" codesign --force --deep $(mac_signidentity) -o runtime --entitlements src/mac/entitlements.plist --timestamp "$app_bundle_name" # Create zip. echo [-] Creating artifact archive cd archive_tmp - zip --symlinks -r "$cwd/$package_name.zip" . + zip_name="$cwd/$package_name.zip" + zip --symlinks -r "$zip_name" . status=$? # Check if the archival succeeded. @@ -487,6 +559,9 @@ then exit 7 fi + # Notarize the compressed app bundle. + mac_notarize "$zip_name" + # All good. echo [-] Universal build of [$package_name] for [$arch] with flags [$cmake_flags] successful exit 0 @@ -905,7 +980,7 @@ then fi # Sign app bundle, unless we're in an universal build. - [ $skip_archive -eq 0 ] && codesign --force --deep -s - "archive_tmp/"*".app" + [ $skip_archive -eq 0 ] && codesign --force --deep $(mac_signidentity) -o runtime --entitlements src/mac/entitlements.plist --timestamp "archive_tmp/"*".app" elif [ "$BUILD_TAG" = "precondition" ] then # Continue with no app bundle on a dry build. @@ -1104,7 +1179,8 @@ elif is_mac then # Create zip. cd archive_tmp - zip --symlinks -r "$cwd/$package_name.zip" . + zip_name="$cwd/$package_name.zip" + zip --symlinks -r "$zip_name" . status=$? else # Determine AppImage runtime architecture. @@ -1180,6 +1256,9 @@ then exit 7 fi +# Notarize the compressed app bundle if we're on macOS. +is_mac && mac_notarize "$zip_name" + # All good. echo [-] Build of [$package_name] for [$arch] with flags [$cmake_flags] successful exit 0 diff --git a/.github/workflows/cmake_linux.yml b/.github/workflows/cmake_linux.yml index 5dc0387d8..9e26e2cd0 100644 --- a/.github/workflows/cmake_linux.yml +++ b/.github/workflows/cmake_linux.yml @@ -3,6 +3,7 @@ name: CMake (Linux) on: push: + branches: [ "master" ] paths: - src/** - cmake/** @@ -14,6 +15,7 @@ on: - "!**/Makefile*" pull_request: + branches: [ "master" ] paths: - src/** - cmake/** diff --git a/.github/workflows/cmake_macos.yml b/.github/workflows/cmake_macos.yml index c917932fe..d90c5f158 100644 --- a/.github/workflows/cmake_macos.yml +++ b/.github/workflows/cmake_macos.yml @@ -3,6 +3,7 @@ name: CMake (macos) on: push: + branches: [ "master" ] paths: - src/** - cmake/** @@ -14,6 +15,7 @@ on: - "!**/Makefile*" pull_request: + branches: [ "master" ] paths: - src/** - cmake/** diff --git a/.github/workflows/cmake_windows_msys2.yml b/.github/workflows/cmake_windows_msys2.yml index eb83d4674..ef2e11ea7 100644 --- a/.github/workflows/cmake_windows_msys2.yml +++ b/.github/workflows/cmake_windows_msys2.yml @@ -3,6 +3,7 @@ name: CMake (Windows, msys2) on: push: + branches: [ "master" ] paths: - src/** - cmake/** @@ -14,6 +15,7 @@ on: - "!**/Makefile*" pull_request: + branches: [ "master" ] paths: - src/** - cmake/** diff --git a/CMakeLists.txt b/CMakeLists.txt index f488271f9..639e78965 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ if(MUNT_EXTERNAL) endif() project(86Box - VERSION 5.0 + VERSION 5.0.1 DESCRIPTION "Emulator of x86-based systems" HOMEPAGE_URL "https://86box.net" LANGUAGES C CXX) diff --git a/debian/changelog b/debian/changelog index 079fba5dd..8389d4654 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -86box (5.0) UNRELEASED; urgency=medium +86box (5.0.1) UNRELEASED; urgency=medium * Bump release. - -- Jasmine Iwanek Wed, 16 Apr 2025 22:08:04 +0200 + -- Jasmine Iwanek Sun, 24 Aug 2025 15:20:01 +0200 diff --git a/src/86box.c b/src/86box.c index 94fbb1d24..498c86871 100644 --- a/src/86box.c +++ b/src/86box.c @@ -211,12 +211,16 @@ int video_fullscreen_scale_maximized = 0; /* (C) Whether also apply when maximized. */ int do_auto_pause = 0; /* (C) Auto-pause the emulator on focus loss */ +int force_constant_mouse = 0; /* (C) Force constant updating of the mouse */ int hook_enabled = 1; /* (C) Keyboard hook is enabled */ int test_mode = 0; /* (C) Test mode */ char uuid[MAX_UUID_LEN] = { '\0' }; /* (C) UUID or machine identifier */ int sound_muted = 0; /* (C) Is sound muted? */ +int jumpered_internal_ecp_dma = 0; /* (C) Jumpered internal EPC DMA */ int inhibit_multimedia_keys; /* (G) Inhibit multimedia keys on Windows. */ int force_10ms; /* (C) Force 10ms CPU frame intervals. */ +int vmm_disabled = 0; /* (G) disable built-in manager */ +char vmm_path_cfg[1024] = { '\0' }; /* (G) VMs path (unless -E is used)*/ int other_ide_present = 0; /* IDE controllers from non-IDE cards are present */ @@ -224,39 +228,58 @@ int other_scsi_present = 0; /* SCSI contro present */ int is_pcjr = 0; /* The current machine is PCjr. */ +int portable_mode = 0; /* We are running in portable mode + (global dirs = exe path) */ // Accelerator key array struct accelKey acc_keys[NUM_ACCELS]; // Default accelerator key values struct accelKey def_acc_keys[NUM_ACCELS] = { - { .name="send_ctrl_alt_del", .desc="Send Control+Alt+Del", - .seq="Ctrl+F12" }, - - { .name="send_ctrl_alt_esc", .desc="Send Control+Alt+Escape", - .seq="Ctrl+F10" }, - - { .name="fullscreen", .desc="Toggle fullscreen", - .seq="Ctrl+Alt+PgUp" }, - - { .name="screenshot", .desc="Screenshot", - .seq="Ctrl+F11" }, - - { .name="release_mouse", .desc="Release mouse pointer", - .seq="Ctrl+End" }, - - { .name="hard_reset", .desc="Hard reset", - .seq="Ctrl+Alt+F12" }, - - { .name="pause", .desc="Toggle pause", - .seq="Ctrl+Alt+F1" }, - - { .name="mute", .desc="Toggle mute", - .seq="Ctrl+Alt+M" } + { + .name="send_ctrl_alt_del", + .desc="Send Control+Alt+Del", + .seq="Ctrl+F12" + }, + { + .name="send_ctrl_alt_esc", + .desc="Send Control+Alt+Escape", + .seq="Ctrl+F10" + }, + { + .name="fullscreen", + .desc="Toggle fullscreen", + .seq="Ctrl+Alt+PgUp" + }, + { + .name="screenshot", + .desc="Screenshot", + .seq="Ctrl+F11" + }, + { + .name="release_mouse", + .desc="Release mouse pointer", + .seq="Ctrl+End" + }, + { + .name="hard_reset", + .desc="Hard reset", + .seq="Ctrl+Alt+F12" + }, + { + .name="pause", + .desc="Toggle pause", + .seq="Ctrl+Alt+F1" + }, + { + .name="mute", + .desc="Toggle mute", + .seq="Ctrl+Alt+M" + } }; -char vmm_path[1024] = { '\0'}; /* TEMPORARY - VM manager path to scan for VMs */ -int vmm_enabled = 0; +char vmm_path[1024] = { '\0' }; /* VM manager path to scan for VMs */ +int start_vmm = 1; /* Statistics. */ extern int mmuflush; @@ -629,7 +652,7 @@ pc_show_usage(char *s) #ifdef _WIN32 "-D or --debug\t\t\t- force debug output logging\n" #endif -#if 1 +#ifndef USE_SDL_UI "-E or --vmmpath\t\t- vm manager path\n" #endif "-F or --fullscreen\t\t- start in fullscreen mode\n" @@ -705,9 +728,6 @@ pc_init(int argc, char *argv[]) time_t now; int c; int lvmp = 0; -#ifdef DEPRECATE_USAGE - int deprecated = 1; -#endif #ifdef ENABLE_NG int ng = 0; #endif @@ -728,10 +748,6 @@ pc_init(int argc, char *argv[]) p = path_get_filename(exe_path); *p = '\0'; } - if (!strncmp(exe_path, "/private/var/folders/", 21)) { - ui_msgbox_header(MBX_FATAL, L"App Translocation", EMU_NAME_W L" cannot determine the emulated machine's location due to a macOS security feature. Please move the " EMU_NAME_W L" app to another folder (not /Applications), or make a copy of it and open that copy instead."); - return 0; - } #elif !defined(_WIN32) /* Grab the actual path if we are an AppImage. */ p = getenv("APPIMAGE"); @@ -739,8 +755,23 @@ pc_init(int argc, char *argv[]) path_get_dirname(exe_path, p); #endif + path_normalize(exe_path); path_slash(exe_path); + /* + * Determine if we are running in portable mode. + * + * We enable portable mode if the EXE path + * contains the global config file. + */ + path_append_filename(temp, exe_path, GLOBAL_CONFIG_FILE); + + FILE *fp = fopen(temp, "r"); + if (fp) { + portable_mode = 1; + fclose(fp); + } + /* * Get the current working directory. * @@ -773,7 +804,7 @@ usage: } else if (!strcasecmp(argv[c], "--debug") || !strcasecmp(argv[c], "-D")) { force_debug = 1; #endif -//#ifdef ENABLE_NG +#ifndef USE_SDL_UI } else if (!strcasecmp(argv[c], "--vmmpath") || !strcasecmp(argv[c], "-E")) { /* Using this variable for vm manager path @@ -784,7 +815,7 @@ usage: memcpy(vmm_path, vp, sizeof(vmm_path)); else memcpy(vmm_path, vp, strlen(vp) + 1); - //#endif +#endif } else if (!strcasecmp(argv[c], "--fullscreen") || !strcasecmp(argv[c], "-F")) { start_in_fullscreen = 1; } else if (!strcasecmp(argv[c], "--logfile") || !strcasecmp(argv[c], "-L")) { @@ -797,9 +828,7 @@ usage: goto usage; ppath = argv[++c]; -#ifdef DEPRECATE_USAGE - deprecated = 0; -#endif + start_vmm = 0; } else if (!strcasecmp(argv[c], "--rompath") || !strcasecmp(argv[c], "-R")) { if ((c + 1) == argc) goto usage; @@ -811,9 +840,7 @@ usage: goto usage; cfg = argv[++c]; -#ifdef DEPRECATE_USAGE - deprecated = 0; -#endif + start_vmm = 0; } else if (!strcasecmp(argv[c], "--global") || !strcasecmp(argv[c], "-O")) { if ((c + 1) == argc || plat_dir_check(argv[c + 1])) goto usage; @@ -922,21 +949,12 @@ usage: else cfg = argv[c++]; -#ifdef DEPRECATE_USAGE - deprecated = 0; -#endif + start_vmm = 0; } if (c != argc) goto usage; -#ifdef DEPRECATE_USAGE - if (deprecated) - pc_show_usage("Running 86Box without a specified VM path and/or configuration\n" - "file has been deprected. Please specify one or use a manager\n" - "(Avalonia 86 is recommended).\n\n"); -#endif - path_slash(usr_path); path_slash(rom_path); @@ -1053,7 +1071,7 @@ usage: /* Build the global configuration file path. */ if (global == NULL) { plat_get_global_config_dir(global_cfg_path, sizeof(global_cfg_path)); - path_append_filename(global_cfg_path, global_cfg_path, CONFIG_FILE); + path_append_filename(global_cfg_path, global_cfg_path, GLOBAL_CONFIG_FILE); } else { strncpy(global_cfg_path, global, sizeof(global_cfg_path) - 1); } @@ -1081,6 +1099,8 @@ usage: #ifdef _WIN32 if (localtime_s(&time_buf, &now) == 0) info = &time_buf; + else + info = NULL; #else info = localtime_r(&now, &time_buf); #endif @@ -1092,21 +1112,54 @@ usage: pclog("#\n# %ls v%ls logfile, created %s\n#\n", EMU_NAME_W, EMU_VERSION_FULL_W, temp); - pclog("# VM: %s\n#\n", vm_name); + + if (portable_mode) { + pclog("# Portable mode enabled.\n"); + } + pclog("# Emulator path: %s\n", exe_path); - pclog("# Userfiles path: %s\n", usr_path); - for (rom_path_t *rom_path = &rom_paths; rom_path != NULL; rom_path = rom_path->next) { - pclog("# ROM path: %s\n", rom_path->path); - } - pclog("# Global configuration file: %s\n", global_cfg_path); - pclog("# Configuration file: %s\n#\n\n", cfg_path); - if (strlen(vmm_path) != 0) { - vmm_enabled = 1; - pclog("# VM Manager enabled. Path: %s\n", vmm_path); + + /* Load the global configuration file. */ + config_load_global(); + config_save_global(); // hack + + /* Determine whether to start the VM manager. */ +#ifndef USE_SDL_UI + if (vmm_disabled && start_vmm) +#endif + { + start_vmm = 0; +#ifdef __APPLE__ + if (!strncmp(exe_path, "/private/var/folders/", 21)) { + ui_msgbox_header(MBX_FATAL, L"App Translocation", EMU_NAME_W L" cannot determine the emulated machine's location due to a macOS security feature. Please move the " EMU_NAME_W L" app to another folder (not /Applications), or make a copy of it and open that copy instead."); + return 0; + } +#endif } - if (!vmm_enabled) { +#ifndef USE_SDL_UI + if (strlen(vmm_path) != 0) { + /* -E specified on the command line. */ + start_vmm = 1; + } else { + strncpy(vmm_path, vmm_path_cfg, sizeof(vmm_path) - 1); + } + + if (start_vmm) { + pclog("# VM Manager enabled. Path: %s\n", vmm_path); + strncpy(usr_path, vmm_path, sizeof(usr_path) - 1); + } else +#endif + { + pclog("# VM: %s\n#\n", vm_name); + pclog("# Configuration file: %s\n#\n\n", cfg_path); + pclog("# Userfiles path: %s\n", usr_path); + + for (rom_path_t *rom_path = &rom_paths; rom_path != NULL; rom_path = rom_path->next) { + pclog("# ROM path: %s\n", rom_path->path); + } + /* * We are about to read the configuration file, which MAY * put data into global variables (the hard- and floppy @@ -1183,11 +1236,10 @@ pc_full_speed(void) /* Initialize modules, ran once, after pc_init. */ int -pc_init_modules(void) +pc_init_roms(void) { int c; int m; - wchar_t temp[512]; char tempc[512]; if (dump_missing) { @@ -1226,6 +1278,16 @@ pc_init_modules(void) } pc_log("A total of %d ROM sets have been loaded.\n", c); + return 1; +} + +int +pc_init_modules(void) +{ + int c; + wchar_t temp[512]; + char tempc[512]; + /* Load the ROMs for the selected machine. */ if (!machine_available(machine)) { swprintf(temp, sizeof_w(temp), plat_get_string(STRING_HW_NOT_AVAILABLE_MACHINE), machine_getname()); @@ -1573,8 +1635,9 @@ pc_reset_hard_init(void) the chances of the SCSI controller ending up on the bridge. */ video_voodoo_init(); - if (joystick_type) - gameport_update_joystick_type(); /* installs game port if no device provides one, must be late */ + /* installs first game port if no device provides one, must be late */ + if (joystick_type[0]) + gameport_update_joystick_type(0); ui_sb_update_panes(); @@ -1782,7 +1845,7 @@ pc_run(void) #ifdef USE_GDBSTUB /* avoid a KBC FIFO overflow when CPU emulation is stalled */ } #endif - joystick_process(); + joystick_process(0); // Gameport 0 endblit(); /* Done with this frame, update statistics. */ @@ -1987,13 +2050,11 @@ do_pause(int p) // Helper to find an accelerator key and return it's index in acc_keys int FindAccelerator(const char *name) { - for(int x=0;xtype == INDEX_NORMAL) && (((int64_t) ci->file_start) < 0LL)) { + ci->type = INDEX_ZERO; + ci->length = 150; + ci->file_start = 0ULL; + ci->file_length = 0ULL; + } + if ((ci->type < INDEX_SPECIAL) || (ci->type > INDEX_NORMAL)) { image_log(img->log, " [TRACK ] %02X, INDEX %02X, ATTR %02X,\n", ci->type, j, @@ -1470,6 +1477,7 @@ image_load_cue(cd_image_t *img, const char *cuefile) uint8_t session = 1; int last_t = -1; int is_viso = 0; + int lo_cmd = 0; int lead[3] = { 0 }; int error; char pathname[MAX_FILENAME_LENGTH]; @@ -1604,6 +1612,9 @@ image_load_cue(cd_image_t *img, const char *cuefile) last_t = t; ct = image_insert_track(img, session, t); + for (int i = 2; i >= 0; i--) + ct->idx[i].type = INDEX_NONE; + ct->form = 0; ct->mode = 0; @@ -1707,6 +1718,7 @@ image_load_cue(cd_image_t *img, const char *cuefile) if (space < (line + strlen(line))) { (void) image_cue_get_keyword(&command, &space); if (!strcmp(command, "LEAD-OUT")) { + lo_cmd = 1; ct = &(img->tracks[lead[2]]); /* Mark it this way so file pointers on it are not @@ -1723,6 +1735,25 @@ image_load_cue(cd_image_t *img, const char *cuefile) image_log(img->log, " [LEAD-OUT] Initialization %s\n", success ? "successful" : "failed"); } else if (!strcmp(command, "SESSION")) { + if (!lo_cmd) { + ct = &(img->tracks[lead[2]]); + /* + Mark it this way so file pointers on it are not + going to be adjusted. + */ + last_t = -1; + ct->sector_size = last; + ci = &(ct->idx[1]); + ci->type = INDEX_ZERO; + ci->file = tf; + ci->file_start = 0; + ci->file_length = 0; + ci->length = (2 * 60 * 75) + (30 * 75); + + image_log(img->log, " [LEAD-OUT] Initialization successful\n"); + } + + lo_cmd = 0; session = image_cue_get_number(&space); if (session > 1) { @@ -2073,10 +2104,8 @@ image_load_mds(cd_image_t *img, const char *mdsfile) char fn[2048] = { 0 }; fseek(fp, mds_footer.fn_offs, SEEK_SET); if (mds_footer.fn_is_wide) { - int len = 0; for (int i = 0; i < 256; i++) { fread(&(wfn[i]), 1, 2, fp); - len++; if (wfn[i] == 0x0000) break; } @@ -2414,10 +2443,10 @@ image_read_sector(const void *local, uint8_t *buffer, } } - if (idx->type >= INDEX_NORMAL) { + if (idx->type >= INDEX_NORMAL) /* Read the data from the file. */ ret = idx->file->read(idx->file, buffer, seek, trk->sector_size); - } else + else /* Index is not in the file, no read to fail here. */ ret = 1; diff --git a/src/chipset/CMakeLists.txt b/src/chipset/CMakeLists.txt index d61b5c53d..9ccba8dc6 100644 --- a/src/chipset/CMakeLists.txt +++ b/src/chipset/CMakeLists.txt @@ -30,12 +30,15 @@ add_library(chipset OBJECT ali1621.c ali6117.c ali1409.c - headland.c - ims8848.c - intel_82335.c + compaq.c compaq_386.c contaq_82c59x.c cs4031.c + grid1520.c + gc100.c + headland.c + ims8848.c + intel_82335.c intel_420ex.c intel_4x0.c intel_i450kx.c @@ -43,6 +46,7 @@ add_library(chipset OBJECT intel_piix.c isa486c.c ../ioapic.c + laserxt.c neat.c olivetti_eva.c opti283.c @@ -55,6 +59,8 @@ add_library(chipset OBJECT opti822.c opti895.c opti5x7.c + philips.c + sanyo.c scamp.c scat.c sis_85c310.c @@ -77,10 +83,9 @@ add_library(chipset OBJECT sis_5595_pmu.c sis_55xx.c sl82c461.c + stpc.c via_vt82c49x.c via_vt82c505.c - gc100.c - stpc.c umc_8886.c umc_hb4.c umc_8890.c diff --git a/src/chipset/ali1489.c b/src/chipset/ali1489.c index fc51bbed2..80362e244 100644 --- a/src/chipset/ali1489.c +++ b/src/chipset/ali1489.c @@ -28,9 +28,10 @@ #include <86box/timer.h> #include <86box/io.h> #include <86box/device.h> - +#include <86box/keyboard.h> #include <86box/hdc_ide.h> #include <86box/hdc.h> +#include <86box/machine.h> #include <86box/mem.h> #include <86box/nmi.h> #include <86box/pic.h> @@ -485,6 +486,9 @@ ali1489_init(UNUSED(const device_t *info)) dev->port_92 = device_add(&port_92_pci_device); dev->smram = smram_add(); + if (machine_get_kbc_device(machine) == NULL) + device_add_params(&kbc_at_device, (void *) KBC_VEN_ALI); + ali1489_defaults(dev); return dev; diff --git a/src/chipset/compaq.c b/src/chipset/compaq.c new file mode 100644 index 000000000..7a52c9d36 --- /dev/null +++ b/src/chipset/compaq.c @@ -0,0 +1,135 @@ +/* + * 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. + * + * Emulation of the Compaq 386 memory controller. + * + * Authors: Miran Grca, + * + * Copyright 2023 Miran Grca. + */ +#include +#include +#include +#include +#include +#include +#include <86box/86box.h> +#include "cpu.h" +#include <86box/io.h> +#include <86box/timer.h> +#include <86box/pit.h> +#include <86box/mem.h> +#include <86box/rom.h> +#include <86box/device.h> +#include <86box/keyboard.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/hdc.h> +#include <86box/hdc_ide.h> +#include <86box/machine.h> +#include <86box/video.h> +#include <86box/vid_cga.h> +#include <86box/vid_cga_comp.h> +#include <86box/plat_unused.h> +#include <86box/chipset.h> + +/* Compaq Deskpro 386 remaps RAM from 0xA0000-0xFFFFF to 0xFA0000-0xFFFFFF */ +typedef struct cpq_t { + mem_mapping_t ram_mapping; +} cpq_t; + +static uint8_t +read_ram(uint32_t addr, UNUSED(void *priv)) +{ + addr = (addr & 0x7ffff) + 0x80000; + addreadlookup(mem_logical_addr, addr); + + return (ram[addr]); +} + +static uint16_t +read_ramw(uint32_t addr, UNUSED(void *priv)) +{ + addr = (addr & 0x7ffff) + 0x80000; + addreadlookup(mem_logical_addr, addr); + + return (*(uint16_t *) &ram[addr]); +} + +static uint32_t +read_raml(uint32_t addr, UNUSED(void *priv)) +{ + addr = (addr & 0x7ffff) + 0x80000; + addreadlookup(mem_logical_addr, addr); + + return (*(uint32_t *) &ram[addr]); +} + +static void +write_ram(uint32_t addr, uint8_t val, UNUSED(void *priv)) +{ + addr = (addr & 0x7ffff) + 0x80000; + addwritelookup(mem_logical_addr, addr); + + mem_write_ramb_page(addr, val, &pages[addr >> 12]); +} + +static void +write_ramw(uint32_t addr, uint16_t val, UNUSED(void *priv)) +{ + addr = (addr & 0x7ffff) + 0x80000; + addwritelookup(mem_logical_addr, addr); + + mem_write_ramw_page(addr, val, &pages[addr >> 12]); +} + +static void +write_raml(uint32_t addr, uint32_t val, UNUSED(void *priv)) +{ + addr = (addr & 0x7ffff) + 0x80000; + addwritelookup(mem_logical_addr, addr); + + mem_write_raml_page(addr, val, &pages[addr >> 12]); +} + +static void +compaq_close(void *priv) +{ + cpq_t *dev = (cpq_t *) priv; + + free(dev); +} + +static void * +compaq_init(UNUSED(const device_t *info)) +{ + cpq_t *dev = (cpq_t *) calloc(1, sizeof(cpq_t)); + + mem_remap_top(384); + mem_mapping_add(&dev->ram_mapping, 0xfa0000, 0x60000, + read_ram, read_ramw, read_raml, + write_ram, write_ramw, write_raml, + 0xa0000 + ram, MEM_MAPPING_INTERNAL, NULL); + + return dev; +} + +const device_t compaq_device = { + .name = "Compaq Memory Control", + .internal_name = "compaq", + .flags = 0, + .local = 0, + .init = compaq_init, + .close = compaq_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; diff --git a/src/machine/m_at_grid.c b/src/chipset/grid1520.c similarity index 94% rename from src/machine/m_at_grid.c rename to src/chipset/grid1520.c index 448749589..ce8b1e2a9 100644 --- a/src/machine/m_at_grid.c +++ b/src/chipset/grid1520.c @@ -39,6 +39,7 @@ #include <86box/rom.h> #include <86box/vid_cga.h> #include <86box/plat_unused.h> +#include <86box/chipset.h> #define GRID_APPROM_SELECT 0x440 #define GRID_APPROM_ENABLE 0x405 @@ -317,7 +318,7 @@ static void grid_reset(void *priv) { dev->grid_rom_select = 0; } -const device_t grid_device = { +const device_t grid1520_device = { .name = "GRiDcase 1520 chipset", .internal_name = "grid1520", .flags = 0, @@ -330,26 +331,3 @@ const device_t grid_device = { .force_redraw = NULL, .config = NULL }; - -int machine_at_grid1520_init(const machine_t *model) { - int ret = 0; - - ret = bios_load_linear("roms/machines/grid1520/grid1520_891025.rom", - 0x000f8000, 0x8000, 0); - if (bios_only || !ret) - return ret; - - machine_at_common_ide_init(model); - mem_remap_top(384); - - device_add(&kbc_at_device); - // for now just select CGA with amber monitor - //device_add(&cga_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&grid_device); - - return ret; -} diff --git a/src/chipset/intel_piix.c b/src/chipset/intel_piix.c index e0d80f348..5d0c18441 100644 --- a/src/chipset/intel_piix.c +++ b/src/chipset/intel_piix.c @@ -47,6 +47,7 @@ #include <86box/hdc_ide.h> #include <86box/hdc_ide_sff8038i.h> #include <86box/usb.h> +#include <86box/lpt.h> #include <86box/machine.h> #include <86box/smbus.h> #include <86box/chipset.h> @@ -618,6 +619,13 @@ piix_write(int func, int addr, uint8_t val, void *priv) } break; case 0x76: + if (dev->type > 1) + fregs[addr] = val & 0x87; + else if (dev->type <= 4) + fregs[addr] = val & 0x8f; + if ((dev->type == 1) && machine_has_jumpered_ecp_dma(machine, MACHINE_DMA_USE_MBDMA)) + lpt1_dma(((val & 0x08) || ((val & 0x07) == 0x04)) ? 0xff : (val & 0x07)); + break; case 0x77: if (dev->type > 1) fregs[addr] = val & 0x87; diff --git a/src/machine/m_xt_laserxt.c b/src/chipset/laserxt.c similarity index 92% rename from src/machine/m_xt_laserxt.c rename to src/chipset/laserxt.c index fcfcebaa2..a5308e2f0 100644 --- a/src/machine/m_xt_laserxt.c +++ b/src/chipset/laserxt.c @@ -1,4 +1,23 @@ -/*This is the chipset used in the LaserXT series model*/ +/* + * 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 the VTech LaserXT chipset. + * + * Authors: Sarah Walker, + * Miran Grca, + * Fred N. van Kempen, + * Jasmine Iwanek, + * + * Copyright 2008-2025 Sarah Walker. + * Copyright 2016-2025 Miran Grca. + * Copyright 2017-2025 Fred N. van Kempen. + * Copyright 2025 Jasmine Iwanek. + */ #include #include #include @@ -452,53 +471,3 @@ const device_t lxt3_device = { .force_redraw = NULL, .config = lxt3_config }; - -static void -machine_xt_laserxt_common_init(const machine_t *model,int is_lxt3) -{ - machine_common_init(model); - - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_xt_device); - - nmi_init(); - standalone_gameport_type = &gameport_200_device; - - device_add(is_lxt3 ? &lxt3_device : &laserxt_device); - - device_add(&kbc_xt_lxt3_device); -} - -int -machine_xt_laserxt_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ltxt/27c64.bin", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - machine_xt_laserxt_common_init(model, 0); - - return ret; -} - -int -machine_xt_lxt3_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/lxt3/27c64d.bin", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - machine_xt_laserxt_common_init(model, 1); - - return ret; -} diff --git a/src/machine/m_xt_philips.c b/src/chipset/philips.c similarity index 74% rename from src/machine/m_xt_philips.c rename to src/chipset/philips.c index 273c856a5..d6f56c3c5 100644 --- a/src/machine/m_xt_philips.c +++ b/src/chipset/philips.c @@ -8,11 +8,9 @@ * * Emulation of the Philips XT-compatible machines. * - * - * * Authors: EngiNerd * - * Copyright 2020-2021 EngiNerd. + * Copyright 2020-2025 EngiNerd. */ #include #include @@ -148,60 +146,3 @@ const device_t philips_device = { .force_redraw = NULL, .config = NULL }; - -void -machine_xt_philips_common_init(const machine_t *model) -{ - machine_common_init(model); - - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - - nmi_init(); - - standalone_gameport_type = &gameport_200_device; - - device_add(&kbc_pc_device); - - device_add(&philips_device); - - device_add(&xta_hd20_device); -} - -int -machine_xt_p3105_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p3105/philipsnms9100.bin", - 0x000fc000, 16384, 0); - - if (bios_only || !ret) - return ret; - - machine_xt_philips_common_init(model); - - /* On-board FDC cannot be disabled */ - device_add(&fdc_xt_device); - - return ret; -} - -int -machine_xt_p3120_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p3120/philips_p3120.bin", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - machine_xt_philips_common_init(model); - - device_add(&gc100a_device); - - device_add(&fdc_at_device); - - return ret; -} diff --git a/src/chipset/sanyo.c b/src/chipset/sanyo.c new file mode 100644 index 000000000..68d6dac9b --- /dev/null +++ b/src/chipset/sanyo.c @@ -0,0 +1,123 @@ +/* + * 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. + * + * Emulation of the Philips XT-compatible machines. + * + * Authors: EngiNerd + * + * Copyright 2020-2025 EngiNerd. + */ +#include +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include <86box/nmi.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/pit.h> +#include <86box/mem.h> +#include <86box/device.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/hdc.h> +#include <86box/gameport.h> +#include <86box/ibm_5161.h> +#include <86box/keyboard.h> +#include <86box/rom.h> +#include <86box/machine.h> +#include <86box/chipset.h> +#include <86box/io.h> +#include <86box/video.h> +#include <86box/plat_unused.h> + +typedef struct sanyo_t { + uint8_t reg; +} sanyo_t; + +#ifdef ENABLE_SANYO_LOG +int sanyo_do_log = ENABLE_SANYO_LOG; + +static void +sanyo_log(const char *fmt, ...) +{ + va_list ap; + + if (sanyo_do_log) { + va_start(ap, fmt); + pclog_ex(fmt, ap); + va_end(ap); + } +} +#else +# define sanyo_log(fmt, ...) +#endif + +static void +sanyo_write(uint16_t port, uint8_t val, void *priv) +{ + sanyo_t *dev = (sanyo_t *) priv; + + dev->reg = val; + + cpu_waitstates = !(val & 0x01); + cpu_update_waitstates(); + + sanyo_log("Sanyo MBC-17 Mainboard: Write %02x at %02x\n", val, port); +} + +static uint8_t +sanyo_read(uint16_t port, void *priv) +{ + const sanyo_t *dev = (sanyo_t *) priv; + uint8_t ret = 0xff; + + ret = dev->reg; + + sanyo_log("Sanyo MBC-17 Mainboard: Read %02x at %02x\n", ret, port); + + return ret; +} + +static void +sanyo_close(void *priv) +{ + sanyo_t *dev = (sanyo_t *) priv; + + free(dev); +} + +static void * +sanyo_init(UNUSED(const device_t *info)) +{ + sanyo_t *dev = (sanyo_t *) calloc(1, sizeof(sanyo_t)); + + dev->reg = cpu_waitstates ? 0x00 : 0x01; + + io_sethandler(0x0063, 0x01, sanyo_read, NULL, NULL, sanyo_write, NULL, NULL, dev); + + return dev; +} + +const device_t sanyo_device = { + .name = "Sanyo MBC-17 Mainboard", + .internal_name = "sanyo", + .flags = 0, + .local = 0, + .init = sanyo_init, + .close = sanyo_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; diff --git a/src/chipset/sis_5513_p2i.c b/src/chipset/sis_5513_p2i.c index b2346bbc4..ac160f337 100644 --- a/src/chipset/sis_5513_p2i.c +++ b/src/chipset/sis_5513_p2i.c @@ -24,8 +24,9 @@ #include <86box/io.h> #include "cpu.h" #include <86box/timer.h> - #include <86box/dma.h> +#include <86box/lpt.h> +#include <86box/machine.h> #include <86box/mem.h> #include <86box/nvr.h> #include <86box/hdd.h> @@ -319,6 +320,8 @@ sis_5513_00_pci_to_isa_write(int addr, uint8_t val, sis_5513_pci_to_isa_t *dev) case 0x62: /* On-board Device DMA Control Register */ dev->pci_conf[addr] = val; + if (machine_has_jumpered_ecp_dma(machine, MACHINE_DMA_USE_MBDMA)) + lpt1_dma(((val & 0x08) || ((val & 0x07) == 0x04)) ? 0xff : (val & 0x07)); break; case 0x63: /* IDEIRQ Remapping Control Register */ diff --git a/src/chipset/sis_5571.c b/src/chipset/sis_5571.c index 3980704fd..02e86a98a 100644 --- a/src/chipset/sis_5571.c +++ b/src/chipset/sis_5571.c @@ -27,6 +27,7 @@ #include <86box/nvr.h> #include <86box/apm.h> #include <86box/acpi.h> +#include <86box/keyboard.h> #include <86box/hdd.h> #include <86box/hdc.h> #include <86box/hdc_ide.h> @@ -166,6 +167,8 @@ sis_5571_init(UNUSED(const device_t *info)) dev->ide = device_add_linked(&sis_5572_ide_device, dev->sis); dev->usb = device_add_linked(&sis_5572_usb_device, dev->sis); + device_add_params(&kbc_at_device, (void *) KBC_VEN_SIS); + return dev; } diff --git a/src/chipset/sis_5581.c b/src/chipset/sis_5581.c index 998ac5350..525fe6598 100644 --- a/src/chipset/sis_5581.c +++ b/src/chipset/sis_5581.c @@ -27,6 +27,7 @@ #include <86box/nvr.h> #include <86box/apm.h> #include <86box/acpi.h> +#include <86box/keyboard.h> #include <86box/hdd.h> #include <86box/hdc.h> #include <86box/hdc_ide.h> @@ -166,6 +167,8 @@ sis_5581_init(UNUSED(const device_t *info)) dev->ide = device_add_linked(&sis_5582_ide_device, dev->sis); dev->usb = device_add_linked(&sis_5582_usb_device, dev->sis); + device_add_params(&kbc_at_device, (void *) KBC_VEN_SIS); + return dev; } diff --git a/src/chipset/sis_5591.c b/src/chipset/sis_5591.c index 3cb11cb5b..d814e0f74 100644 --- a/src/chipset/sis_5591.c +++ b/src/chipset/sis_5591.c @@ -27,6 +27,7 @@ #include <86box/nvr.h> #include <86box/apm.h> #include <86box/acpi.h> +#include <86box/keyboard.h> #include <86box/hdd.h> #include <86box/hdc.h> #include <86box/hdc_ide.h> @@ -178,6 +179,8 @@ sis_5591_init(UNUSED(const device_t *info)) else dev->pmu = device_add_linked(&sis_5595_pmu_device, dev->sis); + device_add_params(&kbc_at_device, (void *) KBC_VEN_SIS); + return dev; } diff --git a/src/chipset/sis_5600.c b/src/chipset/sis_5600.c index 1ed7f9ad0..564243c68 100644 --- a/src/chipset/sis_5600.c +++ b/src/chipset/sis_5600.c @@ -27,6 +27,7 @@ #include <86box/nvr.h> #include <86box/apm.h> #include <86box/acpi.h> +#include <86box/keyboard.h> #include <86box/hdd.h> #include <86box/hdc.h> #include <86box/hdc_ide.h> @@ -178,6 +179,8 @@ sis_5600_init(UNUSED(const device_t *info)) else dev->pmu = device_add_linked(&sis_5595_pmu_device, dev->sis); + device_add_params(&kbc_at_device, (void *) KBC_VEN_SIS); + return dev; } diff --git a/src/chipset/umc_8886.c b/src/chipset/umc_8886.c index 0ed062450..29e2d46da 100644 --- a/src/chipset/umc_8886.c +++ b/src/chipset/umc_8886.c @@ -419,6 +419,9 @@ umc_8886_init(const device_t *info) device_add(&ide_um8673f_device); } + if (machine_get_kbc_device(machine) == NULL) + device_add_params(&kbc_at_device, (void *) KBC_VEN_UMC); + umc_8886_reset(dev); return dev; diff --git a/src/chipset/via_pipc.c b/src/chipset/via_pipc.c index 248664983..7915b199e 100644 --- a/src/chipset/via_pipc.c +++ b/src/chipset/via_pipc.c @@ -43,6 +43,7 @@ #include <86box/hdc.h> #include <86box/hdc_ide.h> #include <86box/hdc_ide_sff8038i.h> +#include <86box/keyboard.h> #include <86box/usb.h> #include <86box/machine.h> #include <86box/smbus.h> @@ -1774,6 +1775,38 @@ pipc_init(const device_t *info) acpi_set_irq_mode(dev->acpi, 0); } + uint32_t kbc_params = 0x00424600; + /* + NOTE: The VIA VT82C42N returns 0x46 ('F') in command 0xA1 (so it + emulates the AMI KF/AMIKey KBC firmware), and 0x42 ('B') in + command 0xAF. + + The version on the VIA VT82C686B southbridge also returns + 'F' in command 0xA1, but 0x45 ('E') in command 0xAF. + The version on the VIA VT82C586B southbridge also returns + 'F' in command 0xA1, but 0x44 ('D') in command 0xAF. + The version on the VIA VT82C586A southbridge also returns + 'F' in command 0xA1, but 0x43 ('C') in command 0xAF. + */ + switch (dev->local) { + /* 596A, 596B, 686B, and 8231 are guesses because we have no probes yet. */ + case VIA_PIPC_586A: case VIA_PIPC_596A: + kbc_params = 0x00434600; + break; + case VIA_PIPC_586B: case VIA_PIPC_596B: + kbc_params = 0x00444600; + break; + case VIA_PIPC_686A: case VIA_PIPC_686B: + case VIA_PIPC_8231: + kbc_params = 0x00454600; + break; + } + + kbc_params |= KBC_VEN_VIA; + + if (machine_get_kbc_device(machine) == NULL) + device_add_params(&kbc_at_device, (void *) (uintptr_t) kbc_params); + return dev; } diff --git a/src/config.c b/src/config.c index 9858f22bd..e88a4753e 100644 --- a/src/config.c +++ b/src/config.c @@ -136,6 +136,21 @@ load_global(void) mouse_sensitivity = 0.1; else if (mouse_sensitivity > 2.0) mouse_sensitivity = 2.0; + + vmm_disabled = ini_section_get_int(cat, "vmm_disabled", 0); + + p = ini_section_get_string(cat, "vmm_path", NULL); + if (p != NULL) { + /* Convert relative paths to absolute in portable mode */ + if (portable_mode && !path_abs(p)) { + path_append_filename(vmm_path_cfg, exe_path, p); + path_normalize(vmm_path_cfg); + } else { + strncpy(vmm_path_cfg, p, sizeof(vmm_path_cfg) - 1); + } + } else { + plat_get_vmm_dir(vmm_path_cfg, sizeof(vmm_path_cfg)); + } } /* Load "General" section. */ @@ -224,6 +239,7 @@ load_general(void) } do_auto_pause = ini_section_get_int(cat, "do_auto_pause", 0); + force_constant_mouse = ini_section_get_int(cat, "force_constant_mouse", 0); p = ini_section_get_string(cat, "uuid", NULL); if (p != NULL) @@ -472,6 +488,12 @@ load_video(void) show_second_monitors = !!ini_section_get_int(cat, "show_second_monitors", 1); video_fullscreen_scale_maximized = !!ini_section_get_int(cat, "video_fullscreen_scale_maximized", 0); + vid_cga_comp_brightness = ini_section_get_int(cat, "vid_cga_comp_brightness", 0); + vid_cga_comp_sharpness = ini_section_get_int(cat, "vid_cga_comp_sharpness", 0); + vid_cga_comp_contrast = ini_section_get_int(cat, "vid_cga_comp_contrast", 100); + vid_cga_comp_hue = ini_section_get_int(cat, "vid_cga_comp_hue", 0); + vid_cga_comp_saturation = ini_section_get_int(cat, "vid_cga_comp_saturation", 100); + // TODO for (uint8_t i = 1; i < GFXCARD_MAX; i ++) { p = ini_section_get_string(cat, "gfxcard_2", NULL); @@ -514,62 +536,63 @@ load_input_devices(void) else mouse_type = 0; + uint8_t joy_insn = 0; p = ini_section_get_string(cat, "joystick_type", NULL); if (p != NULL) { - joystick_type = joystick_get_from_internal_name(p); + joystick_type[joy_insn] = joystick_get_from_internal_name(p); - if (!joystick_type) { + if (!joystick_type[joy_insn]) { /* Try to read an integer for backwards compatibility with old configs */ if (!strcmp(p, "0")) /* Workaround for ini_section_get_int returning 0 on non-integer data */ - joystick_type = joystick_get_from_internal_name("2axis_2button"); + joystick_type[joy_insn] = joystick_get_from_internal_name("2axis_2button"); else { int js = ini_section_get_int(cat, "joystick_type", 8); switch (js) { case JS_TYPE_2AXIS_4BUTTON: - joystick_type = joystick_get_from_internal_name("2axis_4button"); + joystick_type[joy_insn] = joystick_get_from_internal_name("2axis_4button"); break; case JS_TYPE_2AXIS_6BUTTON: - joystick_type = joystick_get_from_internal_name("2axis_6button"); + joystick_type[joy_insn] = joystick_get_from_internal_name("2axis_6button"); break; case JS_TYPE_2AXIS_8BUTTON: - joystick_type = joystick_get_from_internal_name("2axis_8button"); + joystick_type[joy_insn] = joystick_get_from_internal_name("2axis_8button"); break; case JS_TYPE_4AXIS_4BUTTON: - joystick_type = joystick_get_from_internal_name("4axis_4button"); + joystick_type[joy_insn] = joystick_get_from_internal_name("4axis_4button"); break; case JS_TYPE_CH_FLIGHTSTICK_PRO: - joystick_type = joystick_get_from_internal_name("ch_flightstick_pro"); + joystick_type[joy_insn] = joystick_get_from_internal_name("ch_flightstick_pro"); break; case JS_TYPE_SIDEWINDER_PAD: - joystick_type = joystick_get_from_internal_name("sidewinder_pad"); + joystick_type[joy_insn] = joystick_get_from_internal_name("sidewinder_pad"); break; case JS_TYPE_THRUSTMASTER_FCS: - joystick_type = joystick_get_from_internal_name("thrustmaster_fcs"); + joystick_type[joy_insn] = joystick_get_from_internal_name("thrustmaster_fcs"); break; default: - joystick_type = JS_TYPE_NONE; + joystick_type[joy_insn] = JS_TYPE_NONE; break; } } } } else - joystick_type = JS_TYPE_NONE; + joystick_type[joy_insn] = JS_TYPE_NONE; - for (int js = 0; js < joystick_get_max_joysticks(joystick_type); js++) { + for (int js = 0; js < joystick_get_max_joysticks(joystick_type[joy_insn]); js++) { sprintf(temp, "joystick_%i_nr", js); joystick_state[0][js].plat_joystick_nr = ini_section_get_int(cat, temp, 0); if (joystick_state[0][js].plat_joystick_nr) { - for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type); axis_nr++) { + for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[joy_insn]); axis_nr++) { sprintf(temp, "joystick_%i_axis_%i", js, axis_nr); joystick_state[0][js].axis_mapping[axis_nr] = ini_section_get_int(cat, temp, axis_nr); } - for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type); button_nr++) { + for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[joy_insn]); button_nr++) { sprintf(temp, "joystick_%i_button_%i", js, button_nr); joystick_state[0][js].button_mapping[button_nr] = ini_section_get_int(cat, temp, button_nr); } - for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type); pov_nr++) { + for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[joy_insn]); pov_nr++) { sprintf(temp, "joystick_%i_pov_%i", js, pov_nr); p = ini_section_get_string(cat, temp, "0, 0"); joystick_state[0][js].pov_mapping[pov_nr][0] = joystick_state[0][js].pov_mapping[pov_nr][1] = 0; @@ -798,6 +821,14 @@ load_ports(void) char temp[512]; memset(temp, 0, sizeof(temp)); + int has_jumpers = machine_has_jumpered_ecp_dma(machine, DMA_ANY); + int def_jumper = machine_get_default_jumpered_ecp_dma(machine); + + jumpered_internal_ecp_dma = ini_section_get_int(cat, "jumpered_internal_ecp_dma", def_jumper); + + if (!has_jumpers || (jumpered_internal_ecp_dma == def_jumper)) + ini_section_delete_var(cat, "jumpered_internal_ecp_dma"); + for (int c = 0; c < (SERIAL_MAX - 1); c++) { sprintf(temp, "serial%d_enabled", c + 1); com_ports[c].enabled = !!ini_section_get_int(cat, temp, (c >= 2) ? 0 : 1); @@ -1596,7 +1627,7 @@ load_other_removable_devices(void) sprintf(temp, "zip_%02i_image_path", c + 1); p = ini_section_get_string(cat, temp, ""); - + sprintf(temp, "zip_%02i_writeprot", c + 1); rdisk_drives[c].read_only = ini_section_get_int(cat, temp, 0); ini_section_delete_var(cat, temp); @@ -1700,7 +1731,7 @@ load_other_removable_devices(void) sprintf(temp, "rdisk_%02i_image_path", c + 1); p = ini_section_get_string(cat, temp, ""); - + sprintf(temp, "rdisk_%02i_writeprot", c + 1); rdisk_drives[c].read_only = ini_section_get_int(cat, temp, 0); ini_section_delete_var(cat, temp); @@ -1990,13 +2021,9 @@ load_keybinds(void) } } -/* Load the specified or a default configuration file. */ void -config_load(void) +config_load_global(void) { - int i; - ini_section_t c; - config_log("Loading global config file '%s'...\n", global_cfg_path); global = ini_read(global_cfg_path); @@ -2004,13 +2031,19 @@ config_load(void) if (global == NULL) { global = ini_new(); - lang_id = plat_language_code(DEFAULT_LANGUAGE); - config_log("Global config file not present or invalid!\n"); - } else { - load_global(); } + load_global(); +} + +/* Load the specified or a default configuration file. */ +void +config_load(void) +{ + int i; + ini_section_t c; + config_log("Loading VM config file '%s'...\n", cfg_path); memset(hdd, 0, sizeof(hard_disk_t)); @@ -2028,13 +2061,14 @@ config_load(void) cpu_f = (cpu_family_t *) &cpu_families[0]; cpu = 0; - kbd_req_capture = 0; - hide_status_bar = 0; - hide_tool_bar = 0; - scale = 1; - machine = machine_get_machine_from_internal_name("ibmpc"); - dpi_scale = 1; - do_auto_pause = 0; + kbd_req_capture = 0; + hide_status_bar = 0; + hide_tool_bar = 0; + scale = 1; + machine = machine_get_machine_from_internal_name("ibmpc"); + dpi_scale = 1; + do_auto_pause = 0; + force_constant_mouse = 0; cpu_override_interpreter = 0; @@ -2050,6 +2084,8 @@ config_load(void) for (int i = 0; i < HDC_MAX; i++) hdc_current[i] = hdc_get_from_internal_name("none"); + jumpered_internal_ecp_dma = -1; + com_ports[0].enabled = 1; com_ports[1].enabled = 1; for (i = 2; i < (SERIAL_MAX - 1); i++) @@ -2178,6 +2214,22 @@ save_global(void) ini_section_set_double(cat, "mouse_sensitivity", mouse_sensitivity); else ini_section_delete_var(cat, "mouse_sensitivity"); + + if (vmm_disabled != 0) + ini_section_set_int(cat, "vmm_disabled", vmm_disabled); + else + ini_section_delete_var(cat, "vmm_disabled"); + + if (vmm_path_cfg[0] != 0) { + /* Save path as relative to the EXE path in portable mode */ + if (portable_mode && path_abs(vmm_path_cfg) && !strnicmp(vmm_path_cfg, exe_path, strlen(exe_path))) { + ini_section_set_string(cat, "vmm_path", &vmm_path_cfg[strlen(exe_path)]); + } else { + ini_section_set_string(cat, "vmm_path", vmm_path_cfg); + } + } else { + ini_section_delete_var(cat, "vmm_path"); + } } /* Save "General" section. */ @@ -2312,6 +2364,11 @@ save_general(void) else ini_section_delete_var(cat, "do_auto_pause"); + if (force_constant_mouse) + ini_section_set_int(cat, "force_constant_mouse", force_constant_mouse); + else + ini_section_delete_var(cat, "force_constant_mouse"); + char cpu_buf[128] = { 0 }; plat_get_cpu_string(cpu_buf, 128); ini_section_set_string(cat, "host_cpu", cpu_buf); @@ -2430,6 +2487,32 @@ save_video(void) ini_section_set_string(cat, "gfxcard", video_get_internal_name(gfxcard[0])); + + if (vid_cga_comp_brightness) + ini_section_set_int(cat, "vid_cga_comp_brightness", vid_cga_comp_brightness); + else + ini_section_delete_var(cat, "vid_cga_comp_brightness"); + + if (vid_cga_comp_sharpness) + ini_section_set_int(cat, "vid_cga_comp_sharpness", vid_cga_comp_sharpness); + else + ini_section_delete_var(cat, "vid_cga_comp_sharpness"); + + if (vid_cga_comp_contrast != 100) + ini_section_set_int(cat, "vid_cga_comp_contrast", vid_cga_comp_contrast); + else + ini_section_delete_var(cat, "vid_cga_comp_contrast"); + + if (vid_cga_comp_hue) + ini_section_set_int(cat, "vid_cga_comp_hue", vid_cga_comp_hue); + else + ini_section_delete_var(cat, "vid_cga_comp_hue"); + + if (vid_cga_comp_saturation != 100) + ini_section_set_int(cat, "vid_cga_comp_saturation", vid_cga_comp_saturation); + else + ini_section_delete_var(cat, "vid_cga_comp_saturation"); + if (voodoo_enabled == 0) ini_section_delete_var(cat, "voodoo"); else @@ -2483,7 +2566,8 @@ save_input_devices(void) ini_section_set_string(cat, "mouse_type", mouse_get_internal_name(mouse_type)); - if (!joystick_type) { + uint8_t joy_insn = 0; + if (!joystick_type[joy_insn]) { ini_section_delete_var(cat, "joystick_type"); for (int js = 0; js < MAX_PLAT_JOYSTICKS; js++) { @@ -2504,22 +2588,22 @@ save_input_devices(void) } } } else { - ini_section_set_string(cat, "joystick_type", joystick_get_internal_name(joystick_type)); + ini_section_set_string(cat, "joystick_type", joystick_get_internal_name(joystick_type[joy_insn])); - for (int js = 0; js < joystick_get_max_joysticks(joystick_type); js++) { + for (int js = 0; js < joystick_get_max_joysticks(joystick_type[joy_insn]); js++) { sprintf(tmp2, "joystick_%i_nr", js); ini_section_set_int(cat, tmp2, joystick_state[0][js].plat_joystick_nr); if (joystick_state[0][js].plat_joystick_nr) { - for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type); axis_nr++) { + for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[joy_insn]); axis_nr++) { sprintf(tmp2, "joystick_%i_axis_%i", js, axis_nr); ini_section_set_int(cat, tmp2, joystick_state[0][js].axis_mapping[axis_nr]); } - for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type); button_nr++) { + for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[joy_insn]); button_nr++) { sprintf(tmp2, "joystick_%i_button_%i", js, button_nr); ini_section_set_int(cat, tmp2, joystick_state[0][js].button_mapping[button_nr]); } - for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type); pov_nr++) { + for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[joy_insn]); pov_nr++) { sprintf(tmp2, "joystick_%i_pov_%i", js, pov_nr); sprintf(temp, "%i, %i", joystick_state[0][js].pov_mapping[pov_nr][0], joystick_state[0][js].pov_mapping[pov_nr][1]); @@ -2711,6 +2795,14 @@ save_ports(void) ini_section_t cat = ini_find_or_create_section(config, "Ports (COM & LPT)"); char temp[512]; + int has_jumpers = machine_has_jumpered_ecp_dma(machine, DMA_ANY); + int def_jumper = machine_get_default_jumpered_ecp_dma(machine); + + if (!has_jumpers || (jumpered_internal_ecp_dma == def_jumper)) + ini_section_delete_var(cat, "jumpered_internal_ecp_dma"); + else + ini_section_set_int(cat, "jumpered_internal_ecp_dma", jumpered_internal_ecp_dma); + for (int c = 0; c < (SERIAL_MAX - 1); c++) { sprintf(temp, "serial%d_enabled", c + 1); if (((c < 2) && com_ports[c].enabled) || ((c >= 2) && !com_ports[c].enabled)) @@ -3402,11 +3494,16 @@ save_other_removable_devices(void) } void -config_save(void) +config_save_global(void) { save_global(); /* Global */ - ini_write(global, global_cfg_path); + ini_write(global, global_cfg_path); +} + +void +config_save(void) +{ save_general(); /* General */ for (uint8_t i = 0; i < MONITORS_NUM; i++) save_monitor(i); /* Monitors */ @@ -3427,6 +3524,8 @@ config_save(void) save_keybinds(); /* Key bindings */ ini_write(config, cfg_path); + + config_save_global(); } ini_t diff --git a/src/cpu/x86.c b/src/cpu/x86.c index 1b0de661b..1090f22a1 100644 --- a/src/cpu/x86.c +++ b/src/cpu/x86.c @@ -283,7 +283,7 @@ reset_common(int hard) cr0 = 1 << 30; else cr0 = 0; - if (is386 && !is486 && (fpu_type == FPU_387)) + if (is386 && !is486 && ((fpu_type == FPU_387) || (fpu_type == FPU_NONE))) cr0 |= 0x10; cpu_cache_int_enabled = 0; cpu_update_waitstates(); diff --git a/src/device/CMakeLists.txt b/src/device/CMakeLists.txt index abaf87d2f..12835e909 100644 --- a/src/device/CMakeLists.txt +++ b/src/device/CMakeLists.txt @@ -54,6 +54,7 @@ add_library(dev OBJECT pci_bridge.c phoenix_486_jumper.c postcard.c + radisys_config.c serial.c serial_passthrough.c smbus_ali7101.c @@ -61,6 +62,7 @@ add_library(dev OBJECT smbus_sis5595.c tulip_jumper.c unittester.c + zenith_scratchpad.c ) if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT MSVC) diff --git a/src/device/kbc_at.c b/src/device/kbc_at.c index 540bf532a..4c0ea4155 100644 --- a/src/device/kbc_at.c +++ b/src/device/kbc_at.c @@ -62,30 +62,6 @@ #define CCB_MASK 0x68 #define MODE_MASK 0x6c -#define KBC_TYPE_ISA 0x00 /* AT ISA-based chips */ -#define KBC_TYPE_PS2_1 0x01 /* PS2 on PS/2, type 1 */ -#define KBC_TYPE_PS2_2 0x02 /* PS2 on PS/2, type 2 */ -#define KBC_TYPE_GREEN 0x03 /* PS2 green controller */ -#define KBC_TYPE_MASK 0x03 - -#define KBC_VEN_GENERIC 0x00 -#define KBC_VEN_IBM_PS1 0x04 -#define KBC_VEN_TOSHIBA 0x08 -#define KBC_VEN_OLIVETTI 0x0c -#define KBC_VEN_AMI 0x10 -#define KBC_VEN_TRIGEM_AMI 0x14 -#define KBC_VEN_QUADTEL 0x18 -#define KBC_VEN_PHOENIX 0x1c -#define KBC_VEN_ACER 0x20 -#define KBC_VEN_NCR 0x24 -#define KBC_VEN_ALI 0x28 -#define KBC_VEN_SIEMENS 0x2c -#define KBC_VEN_COMPAQ 0x30 -#define KBC_VEN_IBM 0x34 -#define KBC_VEN_MASK 0x7c - -#define KBC_FLAG_IS_ASIC 0x80000000 - #define FLAG_CLOCK 0x01 #define FLAG_CACHE 0x02 #define FLAG_PS2 0x04 @@ -131,7 +107,9 @@ typedef struct atkbc_t { uint8_t irq_state; uint8_t do_irq; uint8_t is_asic; - uint8_t pad; + uint8_t is_green; + uint8_t kblock_switch; + uint8_t is_type2; uint8_t mem[0x100]; @@ -167,8 +145,14 @@ typedef struct atkbc_t { /* Keyboard controller ports. */ kbc_at_port_t *kbc_at_ports[2] = { NULL, NULL }; -static uint8_t kbc_ami_revision = '8'; -static uint8_t kbc_award_revision = 0x42; +static uint8_t kbc_ami_revision = '8'; +static uint8_t kbc_ami_is_clone = 0; + +static uint8_t kbc_award_revision = 0x42; + +static uint8_t kbc_chips_revision = 0xa6; + +static uint16_t kbc_phoenix_version = 0x0416; static void (*kbc_at_do_poll)(atkbc_t *dev); @@ -260,7 +244,7 @@ kbc_translate(atkbc_t *dev, uint8_t val) { int xt_mode = (dev->mem[0x20] & 0x20) && !(dev->misc_flags & FLAG_PS2); /* The IBM AT keyboard controller firmware does not apply translation in XT mode. */ - int translate = !xt_mode && ((dev->mem[0x20] & 0x40) || ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2)); + int translate = !xt_mode && ((dev->mem[0x20] & 0x40) || (dev->is_type2)); uint8_t kbc_ven = dev->flags & KBC_VEN_MASK; int ret = - 1; @@ -390,7 +374,8 @@ kbc_send_to_ob(atkbc_t *dev, uint8_t val, uint8_t channel, uint8_t stat_hi) if (temp == -1) return; - if ((kbc_ven == KBC_VEN_AMI) || (kbc_ven == KBC_VEN_TRIGEM_AMI) || + if ((kbc_ven == KBC_VEN_AMI) || (kbc_ven == KBC_VEN_AMI_TRIGEM) || + (kbc_ven == KBC_VEN_HOLTEK) || (kbc_ven == KBC_VEN_UMC) || (dev->misc_flags & FLAG_PS2)) stat_hi |= ((dev->p1 & 0x80) ? 0x10 : 0x00); else @@ -416,10 +401,7 @@ kbc_send_to_ob(atkbc_t *dev, uint8_t val, uint8_t channel, uint8_t stat_hi) if (dev->irq[0] != 0xffff) picintlevel(1 << dev->irq[0], &dev->irq_state); -#ifdef WRONG_CONDITION - if ((dev->channel > 0) || dev->is_asic || (kbc_ven == KBC_VEN_IBM_PS1) || (kbc_ven == KBC_VEN_IBM)) -#endif - kbc_do_irq(dev); + kbc_do_irq(dev); dev->ob = temp; } @@ -905,7 +887,7 @@ write_cmd(atkbc_t *dev, uint8_t val) kbc_at_log("ATkbc: write command byte: %02X (old: %02X)\n", val, dev->mem[0x20]); /* PS/2 type 2 keyboard controllers always force the XLAT bit to 0. */ - if ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2) { + if (dev->is_type2) { val &= ~CCB_TRANSLATE; dev->mem[0x20] &= ~CCB_TRANSLATE; } else if (!(dev->misc_flags & FLAG_PS2)) { @@ -945,6 +927,26 @@ pulse_poll(void *priv) write_p2(dev, dev->p2 | dev->old_p2); } +static uint8_t +write_cmd_acer(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + + switch (val) { + default: + break; + + case 0xaf: + kbc_at_log("ATkbc: ??? - appears in the probes of the real controller\n"); + kbc_delay_to_ob(dev, 0x00, 0, 0x00); + ret = 0; + break; + } + + return ret; +} + static uint8_t write_cmd_data_ami(void *priv, uint8_t val) { @@ -1001,7 +1003,7 @@ write_cmd_data_ami(void *priv, uint8_t val) void kbc_at_set_ps2(void *priv, const uint8_t ps2) { - atkbc_t *dev = (atkbc_t *) priv; + atkbc_t *dev = (atkbc_t *) priv; dev->ami_flags = (dev->ami_flags & 0xfe) | (!!ps2); dev->misc_flags &= ~FLAG_PS2; @@ -1021,6 +1023,8 @@ write_cmd_ami(void *priv, uint8_t val) atkbc_t *dev = (atkbc_t *) priv; uint8_t kbc_ven = dev->flags & KBC_VEN_MASK; uint8_t ret = 1; + char *copr = NULL; + int coprlen = 0; switch (val) { default: @@ -1040,8 +1044,45 @@ write_cmd_ami(void *priv, uint8_t val) break; case 0xa0: /* copyright message */ - kbc_at_queue_add(dev, 0x28); - kbc_at_queue_add(dev, 0x00); + switch (kbc_ami_revision) { + case 0x35: + copr = "(C)1994 AMI"; + coprlen = strlen(copr) + 1; + break; + case 0x38: + case 0x42: case 0x44: + case 0x45: + copr = "(C) AMERICAN MEGATRENDS INC."; + coprlen = strlen(copr); /* No trailing zero. */ + break; + case 0x46: + copr = "(C)1990 AMERICAN MEGATRENDS INC"; + coprlen = strlen(copr) + 1; + break; + case 0x48: + copr = "(C)1992 AMERICAN MEGATRENDS INC"; + coprlen = strlen(copr) + 1; + break; + case 0x50: case 0x52: + copr = "(C)1993 AMI"; + coprlen = strlen(copr) + 1; + break; + case 0x5a: + if (dev->is_green) + /* + ( C ) 1 9 9 0 A M I + But TriGem forgot to reencrypt it. + */ + copr = "\xFA\x97\xDA\xD9\xD8\xD8\xF9\xFB\xD7\x56\xD6"; + else + copr = "(C)1990 AMERICAN MEGATRENDS INC"; + coprlen = strlen(copr) + 1; + break; + } + + for (int i = 0; i < coprlen; i++) + kbc_at_queue_add(dev, copr[i]); + ret = 0; break; @@ -1216,6 +1257,12 @@ write_cmd_ami(void *priv, uint8_t val) ret = 0; break; + case 0xca: /* read keyboard mode */ + kbc_at_log("ATkbc: AMI - read keyboard mode\n"); + kbc_delay_to_ob(dev, dev->ami_flags, 0, 0x00); + ret = 0; + break; + case 0xcb: /* set keyboard mode */ kbc_at_log("ATkbc: AMI - set keyboard mode\n"); dev->wantdata = 1; @@ -1250,11 +1297,464 @@ write_cmd_ami(void *priv, uint8_t val) } static uint8_t -write_cmd_data_phoenix(void *priv, uint8_t val) +write_cmd_data_sis(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + + switch (dev->command) { + /* 0x40 - 0x5F are aliases for 0x60-0x7F */ + case 0x40 ... 0x5f: + kbc_at_log("ATkbc: SIS - alias write to %02X\n", dev->command & 0x1f); + dev->mem[(dev->command & 0x1f) + 0x20] = val; + if (dev->command == 0x60) + write_cmd(dev, val); + return 0; + + case 0xcb: /* set keyboard mode */ + kbc_at_log("ATkbc: SIS - set keyboard mode\n"); + dev->ami_flags = val; + dev->misc_flags &= ~FLAG_PS2; + if (val & 0x01) { + kbc_at_log("ATkbc: SIS: Emulate PS/2 keyboard\n"); + dev->misc_flags |= FLAG_PS2; + kbc_at_do_poll = kbc_at_poll_ps2; + } else { + kbc_at_log("ATkbc: SIS: Emulate AT keyboard\n"); + kbc_at_do_poll = kbc_at_poll_at; + } + return 0; + + default: + break; + } + + return 1; +} + +static uint8_t +write_cmd_sis(void *priv, uint8_t val) { atkbc_t *dev = (atkbc_t *) priv; uint8_t ret = 1; + switch (val) { + default: + break; + + case 0x00 ... 0x1f: + kbc_at_log("ATkbc: SIS - alias read from %08X\n", val); + kbc_delay_to_ob(dev, dev->mem[val + 0x20], 0, 0x00); + ret = 0; + break; + + case 0x40 ... 0x5f: + kbc_at_log("ATkbc: SIS - alias write to %08X\n", dev->command); + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + ret = 0; + break; + + case 0xa0: /* copyright message */ + kbc_at_queue_add(dev, 0x28); + kbc_at_queue_add(dev, 0x00); + ret = 0; + break; + + case 0xa1: /* get controller version */ + kbc_at_log("ATkbc: SIS - get controller version\n"); + kbc_delay_to_ob(dev, 'H', 0, 0x00); + ret = 0; + break; + + case 0xa4: /* write clock = low */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: SIS - write clock = low\n"); + dev->misc_flags &= ~FLAG_CLOCK; + ret = 0; + } + break; + + case 0xa5: /* write clock = high */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: SIS - write clock = high\n"); + dev->misc_flags |= FLAG_CLOCK; + ret = 0; + } + break; + + case 0xa6: /* read clock */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: SIS - read clock\n"); + kbc_delay_to_ob(dev, (dev->misc_flags & FLAG_CLOCK) ? 0xff : 0x00, 0, 0x00); + ret = 0; + } + break; + + case 0xa7: /* write cache bad */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: SIS - write cache bad\n"); + dev->misc_flags &= FLAG_CACHE; + ret = 0; + } + break; + + case 0xa8: /* write cache good */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: SIS - write cache good\n"); + dev->misc_flags |= FLAG_CACHE; + ret = 0; + } + break; + + case 0xa9: /* read cache */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: SIS - read cache\n"); + kbc_delay_to_ob(dev, (dev->misc_flags & FLAG_CACHE) ? 0xff : 0x00, 0, 0x00); + ret = 0; + } + break; + + case 0xb0 ... 0xb1: + /* set KBC lines P10-P11 (P1 bits 0-1) low */ + if (!(dev->misc_flags & FLAG_PS2)) { + kbc_at_log("ATkbc: set KBC lines P10-P11 (P1 bits 0-3) low\n"); + dev->p1 &= ~(1 << (val & 0x03)); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + dev->pending++; + ret = 0; + } + break; + + case 0xb8 ... 0xb9: + /* set KBC lines P10-P11 (P1 bits 0-1) high */ + kbc_at_log("ATkbc: set KBC lines P10-P11 (P1 bits 0-3) high\n"); + if (!(dev->misc_flags & FLAG_PS2)) { + dev->p1 |= (1 << (val & 0x03)); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + dev->pending++; + } + ret = 0; + break; + + case 0xc1: /* set port P17 to 0 & KBLOCK disabled */ + kbc_at_log("ATkbc: SIS - set port P17 to 0 & KBLOCK disabled\n"); + if (!dev->kblock_switch) + dev->p1 &= 0x7f; + ret = 0; + break; + case 0xc7: /* set port P17 to 1 */ + kbc_at_log("ATkbc: SIS - set port P17 to 1\n"); + if (!dev->kblock_switch) + dev->p1 |= 0x80; + ret = 0; + break; + + case 0xca: /* read keyboard mode */ + kbc_at_log("ATkbc: AMI - read keyboard mode\n"); + kbc_delay_to_ob(dev, dev->ami_flags, 0, 0x00); + ret = 0; + break; + + case 0xcb: /* set keyboard mode */ + kbc_at_log("ATkbc: AMI - set keyboard mode\n"); + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + ret = 0; + break; + + case 0xd6: /* enable KBLOCK switch */ + kbc_at_log("ATkbc: SIS - enable KBLOCK switch\n"); + dev->kblock_switch = 1; + ret = 0; + break; + case 0xd7: /* disable KBLOCK switch */ + kbc_at_log("ATkbc: SIS - disable KBLOCK switch\n"); + dev->kblock_switch = 0; + ret = 0; + break; + } + + return ret; +} + +static uint8_t +write_cmd_umc(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + + switch (val) { + default: + break; + + case 0xa0: /* copyright message */ + kbc_at_queue_add(dev, 0x28); + kbc_at_queue_add(dev, 0x28); + kbc_at_queue_add(dev, 0x28); + kbc_at_queue_add(dev, 0x00); + ret = 0; + break; + + case 0xa1: /* get controller version */ + kbc_at_log("ATkbc: UMC - get controller version\n"); + kbc_delay_to_ob(dev, kbc_ami_revision, 0, 0x00); + ret = 0; + break; + } + + return ret; +} + +static uint8_t +write_cmd_data_award(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + + switch (val) { + default: + break; + + case 0xcb: /* set keyboard mode */ + kbc_at_log("ATkbc: AMI - set keyboard mode\n"); + dev->ami_flags = val; + dev->misc_flags &= ~FLAG_PS2; + if (val & 0x01) { + kbc_at_log("ATkbc: AMI: Emulate PS/2 keyboard\n"); + dev->misc_flags |= FLAG_PS2; + kbc_at_do_poll = kbc_at_poll_ps2; + } else { + kbc_at_log("ATkbc: AMI: Emulate AT keyboard\n"); + kbc_at_do_poll = kbc_at_poll_at; + } + ret = 0; + break; + } + + return ret; +} + +static uint8_t +write_cmd_award(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + + switch (val) { + default: + break; + + case 0x90 ... 0x9f: /* Write low nibble to (Port13-Port10) */ + kbc_at_log("ATkbc: Award - write low nibble to (Port13-Port10)\n"); + dev->p1 = (dev->p1 & 0xf0) | (val & 0x0f); + ret = 0; + break; + + case 0xa1: /* get controller version */ + kbc_at_log("ATkbc: AMI - get controller version\n"); + kbc_delay_to_ob(dev, kbc_ami_revision, 0, 0x00); + ret = 0; + break; + + case 0xa4: /* check if password installed */ + kbc_at_log("ATkbc: check if password installed\n"); + kbc_delay_to_ob(dev, 0xf1, 0, 0x00); + ret = 0; + break; + + case 0xa5: /* do nothing */ + kbc_at_log("ATkbc: do nothing\n"); + ret = 0; + break; + + /* TODO: Make this command do nothing on the Regional HT6542, + or else, Efflixi's Award OPTi 495 BIOS gets a stuck key + in Norton Commander 3.0. */ + case 0xaf: /* read keyboard version */ + kbc_at_log("ATkbc: read keyboard version\n"); + kbc_delay_to_ob(dev, kbc_award_revision, 0, 0x00); + ret = 0; + break; + + case 0xb0 ... 0xb3: + /* set KBC lines P10-P13 (P1 bits 0-3) low */ + kbc_at_log("ATkbc: set KBC lines P10-P13 (P1 bits 0-3) low\n"); + dev->p1 &= ~(1 << (val & 0x03)); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + ret = 0; + break; + + /* TODO: The ICS SB486PV sends command B4 but expects to read *TWO* bytes. */ + case 0xb4: case 0xb5: + /* set KBC lines P22-P23 (P2 bits 2-3) low */ + kbc_at_log("ATkbc: set KBC lines P22-P23 (P2 bits 2-3) low\n"); + write_p2(dev, dev->p2 & ~(4 << (val & 0x01))); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + ret = 0; + break; + + case 0xb6 ... 0xb7: + /* set KBC lines P14-P15 (P1 bits 4-5) low */ + kbc_at_log("ATkbc: set KBC lines P14-P15 (P1 bits 4-5) low\n"); + dev->p1 &= ~(0x10 << (val & 0x01)); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + ret = 0; + break; + + case 0xb8 ... 0xbb: + /* set KBC lines P10-P13 (P1 bits 0-3) high */ + kbc_at_log("ATkbc: set KBC lines P10-P13 (P1 bits 0-3) high\n"); + dev->p1 |= (1 << (val & 0x03)); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + ret = 0; + break; + + case 0xbc: case 0xbd: + /* set KBC lines P22-P23 (P2 bits 2-3) high */ + kbc_at_log("ATkbc: set KBC lines P22-P23 (P2 bits 2-3) high\n"); + write_p2(dev, dev->p2 | (4 << (val & 0x01))); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + ret = 0; + break; + + case 0xbe ... 0xbf: + /* set KBC lines P14-P15 (P1 bits 4-5) high */ + kbc_at_log("ATkbc: set KBC lines P14-P15 (P1 bits 4-5) high\n"); + dev->p1 |= (0x10 << (val & 0x01)); + kbc_delay_to_ob(dev, dev->ob, 0, 0x00); + ret = 0; + break; + + case 0xc8: + /* + * unblock KBC lines P22/P23 + * (allow command D1 to change bits 2/3 of P2) + */ + kbc_at_log("ATkbc: AMI - unblock KBC lines P22 and P23\n"); + dev->ami_flags &= 0xfb; + ret = 0; + break; + + case 0xc9: + /* + * block KBC lines P22/P23 + * (disallow command D1 from changing bits 2/3 of the port) + */ + kbc_at_log("ATkbc: AMI - block KBC lines P22 and P23\n"); + dev->ami_flags |= 0x04; + ret = 0; + break; + + case 0xca: /* read keyboard mode */ + kbc_at_log("ATkbc: AMI - read keyboard mode\n"); + kbc_delay_to_ob(dev, dev->ami_flags, 0, 0x00); + ret = 0; + break; + + case 0xcb: /* set keyboard mode */ + kbc_at_log("ATkbc: AMI - set keyboard mode\n"); + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + ret = 0; + break; + + case 0xe1 ... 0xef: /* Active output ports */ + kbc_at_log("ATkbc: Award - active output ports\n"); + write_p2(dev, (dev->p2 & 0xf1) | (val & 0x0e)); + ret = 0; + break; + } + + return ret; +} + +static uint8_t +write_cmd_data_chips(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + + switch (val) { + default: + break; + + case 0xa1: /* CHIPS extensions */ + kbc_at_log("ATkbc: C&T - CHIPS extensions\n"); + if (dev->command_phase == 1) { + switch (val) { + default: + break; + case 0x00: /* return ID */ + kbc_at_log("ATkbc: C&T - return ID\n"); + kbc_delay_to_ob(dev, kbc_chips_revision, 0, 0x00); + break; + case 0x02: /* write input port */ + kbc_at_log("ATkbc: C&T - write input port\n"); + dev->mem_addr = val; + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + dev->command_phase = 2; + break; + case 0x04: /* select turbo switch input */ + kbc_at_log("ATkbc: C&T - select turbo switch input\n"); + dev->mem_addr = val; + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + dev->command_phase = 2; + break; + case 0x05: /* select turbo LED output */ + kbc_at_log("ATkbc: Cselect turbo LED output\n"); + dev->mem_addr = val; + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + dev->command_phase = 2; + break; + } + } else if (dev->command_phase == 2) { + switch (dev->mem_addr) { + default: + break; + case 0x02: /* write input port */ + kbc_at_log("ATkbc: C&T - write iput port\n"); + dev->p1 = val; + break; + } + dev->command_phase = 0; + } + ret = 0; + break; + } + + return ret; +} + +static uint8_t +write_cmd_chips(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + + switch (val) { + default: + break; + + case 0xa1: /* CHIPS extensions */ + kbc_at_log("ATkbc: C&T - CHIPS extensions\n"); + dev->wantdata = 1; + dev->state = STATE_KBC_PARAM; + ret = 0; + break; + } + + return ret; +} + +static uint8_t +write_cmd_data_phoenix(void *priv, uint8_t val) +{ + atkbc_t *dev = (atkbc_t *) priv; + uint8_t ret = 1; + switch (dev->command) { default: break; @@ -1452,18 +1952,8 @@ write_cmd_phoenix(void *priv, uint8_t val) revision level and proper CPU bits. */ case 0xd5: /* Read MultiKey code revision level */ kbc_at_log("ATkbc: Phoenix - Read MultiKey code revision level\n"); - if (dev->misc_flags & FLAG_PS2) { - if (dev->flags & DEVICE_PCI) { - kbc_at_queue_add(dev, 0x04); - kbc_at_queue_add(dev, 0x16); - } else { - kbc_at_queue_add(dev, 0x01); - kbc_at_queue_add(dev, 0x38); - } - } else { - kbc_at_queue_add(dev, 0x01); - kbc_at_queue_add(dev, 0x29); - } + kbc_at_queue_add(dev, kbc_phoenix_version >> 8); + kbc_at_queue_add(dev, kbc_phoenix_version & 0xff); ret = 0; break; @@ -1496,44 +1986,18 @@ write_cmd_phoenix(void *priv, uint8_t val) } ret = 0; break; - } - return ret; -} - -static uint8_t -write_cmd_siemens(void *priv, uint8_t val) -{ - atkbc_t *dev = (atkbc_t *) priv; - uint8_t ret = 1; - - switch (val) { - default: - ret = write_cmd_ami(dev, val); - break; - - case 0x92: /*Siemens Award - 92 sent by PCD-2L BIOS*/ - kbc_at_log("Siemens Award - 92 sent by PCD-2L BIOS\n"); - ret = 0; - break; - - case 0x94: /*Siemens Award - 94 sent by PCD-2L BIOS*/ - kbc_at_log("Siemens Award - 94 sent by PCD-2L BIOS\n"); - ret = 0; - break; - - case 0x9a: /*Siemens Award - 9A sent by PCD-2L BIOS*/ - kbc_at_log("Siemens Award - 9A sent by PCD-2L BIOS\n"); - ret = 0; - break; - - case 0x9c: /*Siemens Award - 9C sent by PCD-2L BIOS*/ - kbc_at_log("Siemens Award - 9C sent by PCD-2L BIOS\n"); - ret = 0; - break; - - case 0xa9: /*Siemens Award - A9 sent by PCD-2L BIOS*/ - kbc_at_log("Siemens Award - A9 sent by PCD-2L BIOS\n"); + /* NOTE: The MultiKey/42i reference does not document these at all. + The ADI 386SX BIOS uses these commands but it also uses + commands B8 and BB with a parameters, which clearly indicates a + Phoenix KBC. So either these are undocumented or were present + in an early Phoenix MultiKey variant but later removed - the + MultiKey/42i reference does say a number of features were + removed, so these may have been among them, and we have no + earlier MultiKey reference to look at. */ + case 0xe1 ... 0xef: /* Active output ports */ + kbc_at_log("ATkbc: Phoenix - active output ports\n"); + write_p2(dev, (dev->p2 & 0xf1) | (val & 0x0e)); ret = 0; break; } @@ -1740,11 +2204,6 @@ write_cmd_toshiba(void *priv, uint8_t val) static uint8_t read_p1(atkbc_t *dev) { - uint8_t kbc_ven = dev->flags & KBC_VEN_MASK; - uint8_t ret = 0xff; - uint8_t current_drive; - uint8_t fixed_bits; - /* P1 bits: 76543210 ----------------- @@ -1810,92 +2269,9 @@ read_p1(atkbc_t *dev) Compaq: Reserved; NCR: DMA mode. */ - fixed_bits = 4; + uint8_t ret = machine_get_p1(dev->p1) | (dev->p1 & 0x03); - /* The SMM handlers of Intel AMI Pentium BIOS'es expect bit 6 to be set. */ - if ((kbc_ven == KBC_VEN_AMI) && ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_GREEN)) - fixed_bits |= 0x40; - - if (!strcmp(machine_get_internal_name(), "dells333sl")) - /* - Dell System 333s/L: - - Bit 5: Stuck in reboot loop if clear. - */ - ret = 0x20 | (video_is_mda() ? 0x40 : 0x00); - else if (kbc_ven == KBC_VEN_IBM_PS1) { - current_drive = fdc_get_current_drive(); - /* (B0 or F0) | (fdd_is_525(current_drive) on bit 6) */ - ret = dev->p1 | fixed_bits | (fdd_is_525(current_drive) ? 0x40 : 0x00); - } else if (kbc_ven == KBC_VEN_NCR) { - /* Switch settings: - - Bit 7: Keyboard disable; - - Bit 6: Display type (0 color, 1 mono); - - Bit 5: Power-on default speed (0 high, 1 low); - - Bit 4: Sense RAM size (0 unsupported, 1 512k on system board); - - Bit 3: Coprocessor detect; - - Bit 2: Unused; - - Bit 1: High/Auto speed; - - Bit 0: DMA mode. - - (B0 or F0) | 0x04 | (display on bit 6) | (fpu on bit 3) - */ - ret = (dev->p1 | fixed_bits | (video_is_mda() ? 0x40 : 0x00) | - (hasfpu ? 0x08 : 0x00)) & 0xdf; - } else if (kbc_ven == KBC_VEN_TRIGEM_AMI) { - /* Switch settings: - - Bit 3, 2: - - 1, 1: TriGem logo; - - 1, 0: Garbled logo; - - 0, 1: Epson logo; - - 0, 0: Generic AMI logo. - */ - if (dev->misc_flags & FLAG_PCI) - fixed_bits |= 8; - - /* (B0 or F0) | (0x04 or 0x0c) */ - ret = dev->p1 | fixed_bits; - } else if (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) && - ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_GREEN)) { - if (!strcmp(machine_get_internal_name(), "dell466np")) - /* - Dell 466/NP: - - Bit 2: Keyboard fuse (must be set); - - Bit 4: Password disable jumper (must be clear); - - Bit 5: Manufacturing jumper (must be set). - */ - ret = 0x24; - else if (!strcmp(machine_get_internal_name(), "optiplex_gxl")) - /* - Dell OptiPlex GXL/GXM: - - Bit 3: Password disable jumper (must be clear); - - Bit 4: Keyboard fuse (must be set); - - Bit 5: Manufacturing jumper (must be set). - */ - ret = 0x30; - else if (!strcmp(machine_get_internal_name(), "dellplato") || - !strcmp(machine_get_internal_name(), "dellhannibalp") || - !strcmp(machine_get_internal_name(), "dellxp60")) - /* - Dell Dimension XPS Pxxx & Pxxxa/Mxxxa: - - Bit 3: Password disable jumper (must be clear); - - Bit 4: Clear CMOS jumper (must be set). - */ - ret = 0x10; - else { - /* (B0 or F0) | (0x08 or 0x0c) */ - ret = ((dev->p1 | fixed_bits) & 0xf0) | - (((dev->flags & KBC_VEN_MASK) == KBC_VEN_ACER) ? 0x08 : 0x0c); - - if (!strcmp(machine_get_internal_name(), "alfredo")) - ret &= 0xef; - } - } else if (kbc_ven == KBC_VEN_COMPAQ) - ret = dev->p1 | (hasfpu ? 0x00 : 0x04); - else - /* (B0 or F0) | (0x04 or 0x44) */ - ret = dev->p1 | fixed_bits; - - dev->p1 = ((dev->p1 + 1) & 3) | (dev->p1 & 0xfc); + dev->p1 = ((dev->p1 + 1) & 0x03) | (dev->p1 & 0xfc); return ret; } @@ -1990,17 +2366,10 @@ kbc_at_process_cmd(void *priv) case 0xaa: /* self-test */ kbc_at_log("ATkbc: self-test\n"); - if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) { + if (machine_has_flags_ex(MACHINE_PS2_KBC)) { if (dev->state != STATE_RESET) { kbc_at_log("ATkbc: self-test reinitialization\n"); - /* - Yes, the firmware has an OR, but we need to make sure - to keep any forcibly lowered bytes lowered. - - TODO: Proper P1 implementation, with OR and AND flags - in the machine table. - */ - dev->p1 = dev->p1 & 0xff; + dev->p1 |= 0xff; write_p2(dev, 0x4b); if (dev->irq[1] != 0xffff) picintc(1 << dev->irq[1]); @@ -2020,14 +2389,7 @@ kbc_at_process_cmd(void *priv) } else { if (dev->state != STATE_RESET) { kbc_at_log("ATkbc: self-test reinitialization\n"); - /* - Yes, the firmware has an OR, but we need to make sure - to keep any forcibly lowered bytes lowered. - - TODO: Proper P1 implementation, with OR and AND flags - in the machine table. - */ - dev->p1 = dev->p1 & 0xff; + dev->p1 |= 0xff; write_p2(dev, 0xcf); if (dev->irq[0] != 0xffff) picintclevel(1 << dev->irq[0], &dev->irq_state); @@ -2090,14 +2452,6 @@ kbc_at_process_cmd(void *priv) set_enable_kbd(dev, 1); break; - /* TODO: Make this command do nothing on the Regional HT6542, - or else, Efflixi's Award OPTi 495 BIOS gets a stuck key - in Norton Commander 3.0. */ - case 0xaf: /* read keyboard version */ - kbc_at_log("ATkbc: read keyboard version\n"); - kbc_delay_to_ob(dev, kbc_award_revision, 0, 0x00); - break; - case 0xc0: /* read P1 */ kbc_at_log("ATkbc: read P1\n"); kbc_delay_to_ob(dev, read_p1(dev), 0, 0x00); @@ -2119,11 +2473,6 @@ kbc_at_process_cmd(void *priv) } break; - case 0xca: /* read keyboard mode */ - kbc_at_log("ATkbc: AMI - read keyboard mode\n"); - kbc_delay_to_ob(dev, dev->ami_flags, 0, 0x00); - break; - case 0xd0: /* read P2 */ kbc_at_log("ATkbc: read P2\n"); mask = 0xff; @@ -2384,7 +2733,7 @@ kbc_at_port_1_read(uint16_t port, void *priv) atkbc_t *dev = (atkbc_t *) priv; uint8_t ret = 0xff; - if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) + if (machine_has_flags_ex(MACHINE_PS2_KBC)) cycles -= ISA_CYCLES(8); ret = dev->ob; @@ -2409,7 +2758,7 @@ kbc_at_port_2_read(uint16_t port, void *priv) atkbc_t *dev = (atkbc_t *) priv; uint8_t ret = 0xff; - if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) + if (machine_has_flags_ex(MACHINE_PS2_KBC)) cycles -= ISA_CYCLES(8); ret = dev->status; @@ -2445,10 +2794,10 @@ kbc_at_reset(void *priv) dev->sc_or = 0; - dev->ami_flags = ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) ? 0x01 : 0x00; + dev->ami_flags = (machine_has_flags_ex(MACHINE_PS2_KBC)) ? 0x01 : 0x00; dev->misc_flags &= FLAG_PCI; - if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) { + if (machine_has_flags_ex(MACHINE_PS2_KBC)) { dev->misc_flags |= FLAG_PS2; kbc_at_do_poll = kbc_at_poll_ps2; if (dev->irq[1] != 0xffff) @@ -2465,7 +2814,7 @@ kbc_at_reset(void *priv) dev->misc_flags |= FLAG_CACHE; dev->p2 = 0xcd; - if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) { + if (machine_has_flags_ex(MACHINE_PS2_KBC)) { write_p2(dev, 0x4b); } else { /* The real thing writes CF and then AND's it with BF. */ @@ -2481,7 +2830,7 @@ kbc_at_close(void *priv) { atkbc_t *dev = (atkbc_t *) priv; #ifdef OLD_CODE - int max_ports = ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) ? 2 : 1; + int max_ports = machine_has_flags_ex(MACHINE_PS2_KBC) ? 2 : 1; #else int max_ports = 2; #endif @@ -2532,7 +2881,7 @@ kbc_at_set_irq(int num, uint16_t irq, void *priv) atkbc_t *dev = (atkbc_t *) priv; if (dev->irq[num] != 0xffff) { - if ((num == 0) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_1)) + if ((num == 0) && !machine_has_flags_ex(MACHINE_PS2_KBC)) picintclevel(1 << dev->irq[num], &dev->irq_state); else picintc(1 << dev->irq[num]); @@ -2549,9 +2898,12 @@ kbc_at_init(const device_t *info) dev = (atkbc_t *) calloc(1, sizeof(atkbc_t)); + dev->kblock_switch = 1; + dev->flags = info->local; - dev->is_asic = !!(info->local & KBC_FLAG_IS_ASIC); + dev->is_asic = !!(info->local & KBC_FLAG_IS_ASIC); + dev->is_type2 = !!(info->local & KBC_FLAG_IS_TYPE2); video_reset(gfxcard[0]); kbc_at_reset(dev); @@ -2573,20 +2925,32 @@ kbc_at_init(const device_t *info) timer_add(&dev->kbc_dev_poll_timer, kbc_at_dev_poll, dev, 1); dev->write_cmd_data_ven = NULL; - dev->write_cmd_ven = NULL; + dev->write_cmd_ven = NULL; - kbc_ami_revision = '8'; - kbc_award_revision = 0x42; + kbc_ami_revision = '8'; + kbc_award_revision = 0x42; + + kbc_chips_revision = 0xa6; + + kbc_phoenix_version = 0x0416; switch (dev->flags & KBC_VEN_MASK) { default: break; case KBC_VEN_SIEMENS: - kbc_ami_revision = '8'; - kbc_award_revision = 0x42; - dev->write_cmd_data_ven = write_cmd_data_ami; - dev->write_cmd_ven = write_cmd_siemens; + case KBC_VEN_AWARD: + case KBC_VEN_VIA: + if ((info->local & 0xff00) != 0x0000) + kbc_ami_revision = (info->local >> 8) & 0xff; + if ((info->local & 0xff0000) != 0x000000) + kbc_award_revision = (info->local >> 16) & 0xff; + dev->write_cmd_data_ven = write_cmd_data_award; + dev->write_cmd_ven = write_cmd_award; + break; + + case KBC_VEN_ACER: + dev->write_cmd_ven = write_cmd_acer; break; case KBC_VEN_OLIVETTI: @@ -2600,37 +2964,51 @@ kbc_at_init(const device_t *info) dev->write_cmd_ven = write_cmd_ami; break; - case KBC_VEN_TRIGEM_AMI: + case KBC_VEN_AMI_TRIGEM: + dev->is_green = !!(info->local & KBC_FLAG_IS_GREEN); kbc_ami_revision = 'Z'; dev->write_cmd_data_ven = write_cmd_data_ami; dev->write_cmd_ven = write_cmd_ami; break; case KBC_VEN_AMI: - if ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_GREEN) - kbc_ami_revision = '5'; - else if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) { - if (cpu_64bitbus) - kbc_ami_revision = 'R'; - else if (is486) - kbc_ami_revision = 'P'; - else - kbc_ami_revision = 'H'; - } else if (is386 && !is486) { - if (cpu_16bitbus) - kbc_ami_revision = 'D'; - else - kbc_ami_revision = 'B'; - } else if (!is386) - kbc_ami_revision = '8'; - else - kbc_ami_revision = 'F'; + case KBC_VEN_HOLTEK: + kbc_ami_is_clone = !!(info->local & KBC_FLAG_IS_CLONE); + kbc_ami_revision = (info->local >> 8) & 0xff; dev->write_cmd_data_ven = write_cmd_data_ami; dev->write_cmd_ven = write_cmd_ami; break; + case KBC_VEN_UMC: + if ((info->local & 0xff00) != 0x0000) + kbc_ami_revision = (info->local >> 8) & 0xff; + else + kbc_ami_revision = 0x48; + + dev->write_cmd_ven = write_cmd_umc; + break; + + case KBC_VEN_SIS: + if ((info->local & 0xff00) != 0x0000) + kbc_ami_revision = (info->local >> 8) & 0xff; + else + kbc_ami_revision = 0x48; + + dev->write_cmd_data_ven = write_cmd_data_sis; + dev->write_cmd_ven = write_cmd_sis; + break; + + case KBC_VEN_CHIPS: + if ((info->local & 0xff00) != 0x0000) + kbc_chips_revision = (info->local >> 8) & 0xff; + dev->write_cmd_data_ven = write_cmd_data_chips; + dev->write_cmd_ven = write_cmd_chips; + break; + case KBC_VEN_PHOENIX: + if ((info->local & 0xffff00) != 0x000000) + kbc_phoenix_version = (info->local >> 8) & 0xffff; dev->write_cmd_data_ven = write_cmd_data_phoenix; dev->write_cmd_ven = write_cmd_phoenix; break; @@ -2646,11 +3024,7 @@ kbc_at_init(const device_t *info) break; } -#ifdef OLD_CODE - max_ports = ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) ? 2 : 1; -#else max_ports = 2; -#endif for (int i = 0; i < max_ports; i++) { kbc_at_ports[i] = (kbc_at_port_t *) calloc(1, sizeof(kbc_at_port_t)); @@ -2663,11 +3037,11 @@ kbc_at_init(const device_t *info) /* The actual keyboard. */ if (keyboard_type == KEYBOARD_TYPE_INTERNAL) { if (machine_has_flags(machine, MACHINE_KEYBOARD_JIS)) - device_add(((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) ? &keyboard_ps55_device : + device_add(machine_has_flags_ex(MACHINE_PS2_KBC) ? &keyboard_ps55_device : &keyboard_ax_device); else device_add_params(&keyboard_at_generic_device, (void *) (uintptr_t) - (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) ? FLAG_PS2_KBD : 0x00)); + (machine_has_flags_ex(MACHINE_PS2_KBC) ? FLAG_PS2_KBD : 0x00)); } else keyboard_add_device(); @@ -2682,385 +3056,7 @@ const device_t kbc_at_device = { .name = "PC/AT Keyboard Controller", .internal_name = "kbc_at", .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_GENERIC, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_siemens_device = { - .name = "PC/AT Keyboard Controller", - .internal_name = "kbc_at", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_SIEMENS, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_ami_device = { - .name = "PC/AT Keyboard Controller (AMI)", - .internal_name = "kbc_at_ami", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_tg_ami_device = { - .name = "PC/AT Keyboard Controller (TriGem AMI)", - .internal_name = "kbc_at_tg_ami", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_TRIGEM_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_toshiba_device = { - .name = "PC/AT Keyboard Controller (Toshiba)", - .internal_name = "kbc_at_toshiba", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_TOSHIBA, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_olivetti_device = { - .name = "PC/AT Keyboard Controller (Olivetti)", - .internal_name = "kbc_at_olivetti", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_OLIVETTI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_ncr_device = { - .name = "PC/AT Keyboard Controller (NCR)", - .internal_name = "kbc_at_ncr", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_NCR, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_compaq_device = { - .name = "PC/AT Keyboard Controller (Compaq)", - .internal_name = "kbc_at_compaq", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_COMPAQ, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_at_phoenix_device = { - .name = "PC/AT Keyboard Controller (Phoenix)", - .internal_name = "kbc_at_phoenix", - .flags = DEVICE_KBC, - .local = KBC_TYPE_ISA | KBC_VEN_PHOENIX, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_device = { - .name = "PS/2 Keyboard Controller", - .internal_name = "kbc_ps2", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_GENERIC, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_ps1_device = { - .name = "PS/2 Keyboard Controller (IBM PS/1)", - .internal_name = "kbc_ps2_ps1", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_IBM_PS1, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_ps1_pci_device = { - .name = "PS/2 Keyboard Controller (IBM PS/1)", - .internal_name = "kbc_ps2_ps1_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_IBM_PS1, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_xi8088_device = { - .name = "PS/2 Keyboard Controller (Xi8088)", - .internal_name = "kbc_ps2_xi8088", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_GENERIC, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_ami_device = { - .name = "PS/2 Keyboard Controller (AMI)", - .internal_name = "kbc_ps2_ami", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_compaq_device = { - .name = "PS/2 Keyboard Controller (Compaq)", - .internal_name = "kbc_at_compaq", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_COMPAQ, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_holtek_device = { - .name = "PS/2 Keyboard Controller (Holtek)", - .internal_name = "kbc_ps2_holtek", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_AMI | KBC_FLAG_IS_ASIC, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_phoenix_device = { - .name = "PS/2 Keyboard Controller (Phoenix)", - .internal_name = "kbc_ps2_phoenix", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_PHOENIX, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_tg_ami_device = { - .name = "PS/2 Keyboard Controller (TriGem AMI)", - .internal_name = "kbc_ps2_tg_ami", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_TRIGEM_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_mca_1_device = { - .name = "PS/2 Keyboard Controller (IBM PS/2 MCA Type 1)", - .internal_name = "kbc_ps2_mca_1", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_IBM, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_mca_2_device = { - .name = "PS/2 Keyboard Controller (IBM PS/2 MCA Type 2)", - .internal_name = "kbc_ps2_mca_2", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_2 | KBC_VEN_IBM, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_quadtel_device = { - .name = "PS/2 Keyboard Controller (Quadtel/MegaPC)", - .internal_name = "kbc_ps2_quadtel", - .flags = DEVICE_KBC, - .local = KBC_TYPE_PS2_1 | KBC_VEN_QUADTEL, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_pci_device = { - .name = "PS/2 Keyboard Controller (PCI)", - .internal_name = "kbc_ps2_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_GENERIC, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_ami_pci_device = { - .name = "PS/2 Keyboard Controller (PCI) (AMI)", - .internal_name = "kbc_ps2_ami_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_ali_pci_device = { - .name = "PS/2 Keyboard Controller (PCI) (ALi M5123/M1543C)", - .internal_name = "kbc_ps2_ali_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_ALI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_intel_ami_pci_device = { - .name = "PS/2 Keyboard Controller (PCI) (AMI)", - .internal_name = "kbc_ps2_intel_ami_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_GREEN | KBC_VEN_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_tg_ami_pci_device = { - .name = "PS/2 Keyboard Controller (PCI) (TriGem AMI)", - .internal_name = "kbc_ps2_tg_ami_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_TRIGEM_AMI, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_acer_pci_device = { - .name = "PS/2 Keyboard Controller (PCI) (Acer 90M002A)", - .internal_name = "kbc_ps2_acer_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_ACER, - .init = kbc_at_init, - .close = kbc_at_close, - .reset = kbc_at_reset, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = NULL -}; - -const device_t kbc_ps2_phoenix_pci_device = { - .name = "PS/2 Keyboard Controller (PCI) (Phoenix)", - .internal_name = "kbc_ps2_phoenix_pci", - .flags = DEVICE_KBC | DEVICE_PCI, - .local = KBC_TYPE_PS2_1 | KBC_VEN_PHOENIX, + .local = KBC_VEN_GENERIC, .init = kbc_at_init, .close = kbc_at_close, .reset = kbc_at_reset, diff --git a/src/device/lpt.c b/src/device/lpt.c index 31594bf03..1466ea021 100644 --- a/src/device/lpt.c +++ b/src/device/lpt.c @@ -25,12 +25,14 @@ #include <86box/network.h> #include <86box/plat_fallthrough.h> -static int next_inst = 0; -int lpt_3bc_used = 0; +static int next_inst = 0; +static int lpt_3bc_used = 0; -lpt_port_t lpt_ports[PARALLEL_MAX]; +static lpt_t *lpt1; -lpt_device_t lpt_devs[PARALLEL_MAX]; +lpt_port_t lpt_ports[PARALLEL_MAX]; + +lpt_device_t lpt_devs[PARALLEL_MAX]; const lpt_device_t lpt_none_device = { .name = "None", @@ -825,6 +827,13 @@ lpt_port_dma(lpt_t *dev, const uint8_t dma) lpt_log("Port %i DMA = %02X\n", dev->id, dma); } +void +lpt1_dma(const uint8_t dma) +{ + if (lpt1 != NULL) + lpt_port_dma(lpt1, dma); +} + void lpt_port_remove(lpt_t *dev) { @@ -894,6 +903,9 @@ lpt_close(void *priv) } + if (lpt1 == dev) + lpt1 = NULL; + free(dev); } @@ -962,7 +974,10 @@ lpt_init(const device_t *info) dev->addr = 0xffff; dev->irq = 0xff; - dev->dma = 0xff; + if ((jumpered_internal_ecp_dma >= 0) && (jumpered_internal_ecp_dma != 4)) + dev->dma = jumpered_internal_ecp_dma; + else + dev->dma = 0xff; dev->enable_irq = 0x00; dev->cfg_regs_enabled = 0; dev->ext = 0; @@ -1005,6 +1020,9 @@ lpt_init(const device_t *info) if (!(info->local & 0xfff00000)) next_inst++; + if (lpt1 == NULL) + lpt1 = dev; + return dev; } diff --git a/src/device/mouse.c b/src/device/mouse.c index 2cf47c096..fb7fd020f 100644 --- a/src/device/mouse.c +++ b/src/device/mouse.c @@ -559,7 +559,7 @@ mouse_get_buttons_ex(void) void mouse_set_sample_rate(double new_rate) { - mouse_timed = (new_rate > 0.0); + mouse_timed = !force_constant_mouse && (new_rate > 0.0); timer_stop(&mouse_timer); @@ -568,6 +568,12 @@ mouse_set_sample_rate(double new_rate) timer_on_auto(&mouse_timer, 1000000.0 / sample_rate); } +void +mouse_update_sample_rate(void) +{ + mouse_set_sample_rate(sample_rate); +} + /* Callback from the hardware driver. */ void mouse_set_buttons(int buttons) @@ -676,8 +682,7 @@ mouse_reset(void) /* Clear local data. */ mouse_clear_coords(); mouse_clear_buttons(); - mouse_input_mode = 0; - mouse_timed = 1; + mouse_input_mode = 0; /* If no mouse configured, we're done. */ if (mouse_type == 0) @@ -686,8 +691,7 @@ mouse_reset(void) timer_add(&mouse_timer, mouse_timer_poll, NULL, 0); /* Poll at 100 Hz, the default of a PS/2 mouse. */ - sample_rate = 100.0; - timer_on_auto(&mouse_timer, 1000000.0 / sample_rate); + mouse_set_sample_rate(100.0); if ((mouse_type > 1) && (mouse_devices[mouse_type].device != NULL)) mouse_priv = device_add(mouse_devices[mouse_type].device); diff --git a/src/device/mouse_upc.c b/src/device/mouse_upc.c index 7a8d6143e..9f55c9214 100644 --- a/src/device/mouse_upc.c +++ b/src/device/mouse_upc.c @@ -226,6 +226,8 @@ mouse_upc_port_2_write(uint16_t port, uint8_t val, void *priv) if (dev->status & (STAT_CLEAR | STAT_RESET)) { /* TODO: Silently reset the mouse. */ + dev->status &= ~STAT_RX_FULL; + dev->status |= (STAT_DEV_IDLE | STAT_TX_IDLE); } } diff --git a/src/device/radisys_config.c b/src/device/radisys_config.c new file mode 100644 index 000000000..67f577de4 --- /dev/null +++ b/src/device/radisys_config.c @@ -0,0 +1,89 @@ +/* + * 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 the Radisys EPC-2012 Configuration registers. + * + * Authors: Miran Grca, + * + * Copyright 2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/machine.h> +#include <86box/lpt.h> +#include <86box/machine.h> +#include <86box/chipset.h> +#include <86box/plat_unused.h> + +typedef struct radisys_config_t { + uint8_t regs[2]; +} radisys_config_t; + +static uint8_t +radisys_config_read(uint16_t port, void *priv) +{ + radisys_config_t *dev = (radisys_config_t *) priv; + uint8_t ret = dev->regs[port & 0x0001]; + + return ret; +} + +static void +radisys_config_write(uint16_t port, uint8_t val, void *priv) +{ + radisys_config_t *dev = (radisys_config_t *) priv; + + dev->regs[port & 0x0001] = val; + + if (!(port & 0x0001) && machine_has_jumpered_ecp_dma(machine, MACHINE_DMA_USE_CONFIG)) + lpt1_dma((val & 0x02) ? 3 : 1); +} + +static void +radisys_config_close(void *priv) +{ + radisys_config_t *dev = (radisys_config_t *) priv; + + free(dev); +} + +static void * +radisys_config_init(UNUSED(const device_t *info)) +{ + /* We have to return something non-NULL. */ + radisys_config_t *dev = (radisys_config_t *) calloc(1, sizeof(radisys_config_t)); + + /* 370h is also supported. */ + io_sethandler(0x0270, 0x0002, radisys_config_read, NULL, NULL, radisys_config_write, NULL, NULL, dev); + + return dev; +} + +const device_t radisys_config_device = { + .name = "Radisys EPC-2012 Configuration", + .internal_name = "radisys_config", + .flags = 0, + .local = 0, + .init = radisys_config_init, + .close = radisys_config_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; diff --git a/src/machine/m_xt_zenith.c b/src/device/zenith_scratchpad.c similarity index 55% rename from src/machine/m_xt_zenith.c rename to src/device/zenith_scratchpad.c index 7ff7aa171..0db40c3f0 100644 --- a/src/machine/m_xt_zenith.c +++ b/src/device/zenith_scratchpad.c @@ -47,6 +47,7 @@ #include <86box/io.h> #include <86box/video.h> #include <86box/plat_unused.h> +#include <86box/chipset.h> typedef struct { mem_mapping_t scratchpad_mapping; @@ -94,7 +95,7 @@ zenith_scratchpad_close(void *priv) free(dev); } -static const device_t zenith_scratchpad_device = { +const device_t zenith_scratchpad_device = { .name = "Zenith scratchpad RAM", .internal_name = "zenith_scratchpad", .flags = 0, @@ -107,104 +108,3 @@ static const device_t zenith_scratchpad_device = { .force_redraw = NULL, .config = NULL }; - -void -machine_zenith_init(const machine_t *model) -{ - machine_common_init(model); - - device_add(&zenith_scratchpad_device); - - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - - device_add(&kbc_xt_zenith_device); - - nmi_init(); -} - -/* - * Current bugs and limitations: - * - missing NVRAM implementation - */ -int -machine_xt_z184_init(const machine_t *model) -{ - lpt_t *lpt = NULL; - int ret; - - ret = bios_load_linear("roms/machines/zdsupers/z184m v3.1d.10d", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - machine_zenith_init(model); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_xt_device); - - lpt = device_add_inst(&lpt_port_device, 1); - lpt_port_remove(lpt); - lpt_port_setup(lpt, LPT2_ADDR); - lpt_set_next_inst(255); - - device_add(&ns8250_device); - /* So that serial_standalone_init() won't do anything. */ - serial_set_next_inst(SERIAL_MAX - 1); - - device_add(&cga_device); - - return ret; -} - -int -machine_xt_z151_init(const machine_t *model) -{ - int ret; - ret = bios_load_linear("roms/machines/zdsz151/444-229-18.bin", - 0x000fc000, 32768, 0); - if (ret) { - bios_load_aux_linear("roms/machines/zdsz151/444-260-18.bin", - 0x000f8000, 16384, 0); - } - - if (bios_only || !ret) - return ret; - - machine_zenith_init(model); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_xt_tandy_device); - - return ret; -} - -/* - * Current bugs and limitations: - * - Memory board support for EMS currently missing - */ -int -machine_xt_z159_init(const machine_t *model) -{ - lpt_t *lpt = NULL; - int ret; - - ret = bios_load_linear("roms/machines/zdsz159/z159m v2.9e.10d", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - machine_zenith_init(model); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_xt_tandy_device); - - /* parallel port is on the memory board */ - lpt = device_add_inst(&lpt_port_device, 1); - lpt_port_remove(lpt); - lpt_port_setup(lpt, LPT2_ADDR); - lpt_set_next_inst(255); - - return ret; -} diff --git a/src/disk/CMakeLists.txt b/src/disk/CMakeLists.txt index 1cccfe2da..9b8d72f54 100644 --- a/src/disk/CMakeLists.txt +++ b/src/disk/CMakeLists.txt @@ -23,6 +23,7 @@ add_library(hdd OBJECT hdc_st506_xt.c hdc_st506_at.c hdc_xta.c + hdc_xta_ps1.c hdc_esdi_at.c hdc_esdi_mca.c hdc_xtide.c diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index 367a6f3ac..b034fa3e3 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -480,7 +480,7 @@ static int ide_get_max(const ide_t *ide, const int type) { const int ata_4 = ide_is_ata4(ide_boards[ide->board]); - const int max[2][4] = { { 0, -1, -1, -1 }, { 4, 2, 2, 5 } }; + const int max[2][4] = { { 3, -1, -1, -1 }, { 4, 2, 2, 5 } }; int ret; if (ide->type == IDE_ATAPI) @@ -495,7 +495,7 @@ static int ide_get_timings(const ide_t *ide, const int type) { const int ata_4 = ide_is_ata4(ide_boards[ide->board]); - const int timings[2][3] = { { 0, 0, 0 }, { 120, 120, 0 } }; + const int timings[2][3] = { { 0, 240, 180 }, { 120, 120, 120 } }; int ret; if (ide->type == IDE_ATAPI) @@ -666,8 +666,9 @@ ide_identify(ide_t *ide) ide->buffer[88] = 0x0000; if (max_pio >= 3) { + ide->buffer[49] |= 0x0c00; ide->buffer[53] |= 0x0002; - ide->buffer[67] = ide_get_timings(ide, TIMINGS_PIO); + ide->buffer[67] = ide_get_timings(ide, TIMINGS_PIO_FC); ide->buffer[68] = ide_get_timings(ide, TIMINGS_PIO_FC); for (i = 3; i <= max_pio; i++) ide->buffer[64] |= (1 << (i - 3)); @@ -710,12 +711,8 @@ ide_identify(ide_t *ide) } if (ide->mdma_mode != -1) { - d = (ide->mdma_mode & 0xff); - d <<= 8; - if ((ide->mdma_mode & 0x300) == 0x000) { - if ((ide->mdma_mode & 0xff) >= 3) - ide->buffer[64] |= d; - } else if ((ide->mdma_mode & 0x300) == 0x100) + d = (ide->mdma_mode & 0xff) << 8; + if ((ide->mdma_mode & 0x300) == 0x100) ide->buffer[62] |= d; else if ((ide->mdma_mode & 0x300) == 0x200) ide->buffer[63] |= d; @@ -829,6 +826,7 @@ ide_set_features(ide_t *ide) int mode; int submode; int max; + int max_pio_submode; features = ide->tf->cylprecomp; features_data = ide->tf->secount; @@ -844,9 +842,10 @@ ide_set_features(ide_t *ide) switch (mode) { case 0x00: /* PIO default */ - if (submode != 0) + max = ide_get_max(ide, TYPE_PIO); + max_pio_submode = (max >= 3) ? 1 : 0; + if (submode > max_pio_submode) return 0; - max = ide_get_max(ide, TYPE_PIO); ide->mdma_mode = (1 << max); ide_log("IDE %02X: Setting DPIO mode: %02X, %08X\n", ide->channel, submode, ide->mdma_mode); diff --git a/src/disk/hdc_ide_cmd640.c b/src/disk/hdc_ide_cmd640.c index 9674063d2..dbdf32dcf 100644 --- a/src/disk/hdc_ide_cmd640.c +++ b/src/disk/hdc_ide_cmd640.c @@ -45,7 +45,7 @@ typedef struct cmd640_t { uint8_t pci; uint8_t irq_state; uint8_t pci_slot; - uint8_t pad0; + uint8_t force_on; uint8_t regs[256]; uint32_t local; int irq_mode[2]; @@ -143,7 +143,7 @@ cmd640_ide_handlers(cmd640_t *dev) ide_set_base(0, main); ide_set_side(0, side); - if (dev->regs[0x04] & 0x01) + if ((dev->regs[0x04] & 0x01) || dev->force_on) ide_pri_enable(); } @@ -161,7 +161,7 @@ cmd640_ide_handlers(cmd640_t *dev) ide_set_base(1, main); ide_set_side(1, side); - if ((dev->regs[0x04] & 0x01) && (dev->regs[0x51] & 0x08)) + if (((dev->regs[0x04] & 0x01) || dev->force_on) && (dev->regs[0x51] & 0x08)) ide_sec_enable(); } } @@ -512,6 +512,7 @@ cmd640_init(const device_t *info) dev->local = info->local; dev->channels = ((info->local & 0x60000) >> 17) & 0x03; + dev->force_on = !!(info->local & 0x100000); if (info->flags & DEVICE_PCI) { device_add(&ide_pci_2ch_device); diff --git a/src/disk/hdc_xta.c b/src/disk/hdc_xta.c index 426be9a67..8c60caad2 100644 --- a/src/disk/hdc_xta.c +++ b/src/disk/hdc_xta.c @@ -108,6 +108,7 @@ #define WD_REV_1_BIOS_FILE "roms/hdd/xta/idexywd2.bin" #define WD_REV_2_BIOS_FILE "roms/hdd/xta/infowdbios.rom" +#define PC3086_BIOS_FILE "roms/machines/pc3086/c800.bin" #define ST50X_BIOS_FILE "roms/hdd/xta/ST05XBIO.BIN" #define PC5086_BIOS_FILE "roms/machines/pc5086/c800.bin" @@ -1032,7 +1033,7 @@ xta_init_common(const device_t *info, int type) fn = (char *) device_get_bios_file(info, bios_rev, 0); /* Revision 2 actually supports 2 drives using drive select. */ if (!strcmp(bios_rev, "rev_1")) - max = 1; + max = 1; #ifdef SELECTABLE_BASE dev->base = device_get_config_hex16("base"); #else @@ -1041,15 +1042,22 @@ xta_init_common(const device_t *info, int type) dev->irq = device_get_config_int("irq"); dev->rom_addr = device_get_config_hex20("bios_addr"); dev->dma = 3; + case 1: /* Amstrad PC3086 */ + dev->name = "WDXT-150 PC3086"; + dev->rom_addr = 0xc8000; + fn = PC3086_BIOS_FILE; + dev->base = 0x0320; + dev->irq = 5; + dev->dma = 3; break; - case 1: /* EuroPC */ - case 3: /* Amstrad PC5086 */ + case 2: /* EuroPC */ + case 5: /* Amstrad PC5086 */ switch (dev->type) { - case 1: + case 2: dev->name = "HD20"; break; - case 3: + case 5: dev->name = "ST-50X PC5086"; dev->rom_addr = 0xc8000; fn = PC5086_BIOS_FILE; @@ -1060,10 +1068,10 @@ xta_init_common(const device_t *info, int type) dev->irq = 5; dev->dma = 3; break; - case 2: /* Seagate ST-05X Standalone */ + case 3: /* Seagate ST-05X Standalone */ case 4: /* Seagate ST-05X Standalone secondary device */ switch (dev->type) { - case 2: + case 3: dev->name = "ST-50X PRI"; dev->rom_addr = device_get_config_hex20("bios_addr"); fn = ST50X_BIOS_FILE; @@ -1206,7 +1214,51 @@ xta_init_common(const device_t *info, int type) else dev->sw = (dev->sw & (c ? 0xf3 : 0xfc)) | (0x02 << (c << 1)); } - } else if ((dev->type >= 2) && (dev->type <= 4)) { + } else if (dev->type == 1) { + /* + WDXT-150, Revision 3 (Amstrad PC3086) switches: + - Drive 0, bits 1,0: + - With bit 4 set: + - 0,0 = 612/4/17; + - 0,1 = 615/6/17; + - 1,0 = 977/5/17; + - 1,1 = 615/4/17. + - With bit 4 clear: + - 0,0 = 971/4/17; + - 0,1 = 976/6/17; + - 1,0 = 1024/5/17; + - 1,1 = 976/4/17. + - Drive 1, bits 3,2: + - With bit 4 set: + - 0,0 = 612/4/17; + - 0,1 = 615/6/17; + - 1,0 = 977/5/17; + - 1,1 = 615/4/17. + - With bit 4 clear: + - 0,0 = 971/4/17; + - 0,1 = 976/6/17; + - 1,0 = 1024/5/17; + - 1,1 = 976/4/17. + */ + if (drive->tracks == 971) + dev->sw = ((dev->sw & 0xef) & (c ? 0xf3 : 0xfc)) | (0x00 << (c << 1)); + else if (drive->tracks == 976) { + if (drive->hpc == 6) + dev->sw = ((dev->sw & 0xef) & (c ? 0xf3 : 0xfc)) | (0x01 << (c << 1)); + else + dev->sw = ((dev->sw & 0xef) & (c ? 0xf3 : 0xfc)) | (0x03 << (c << 1)); + } else if (drive->tracks == 1024) + dev->sw = ((dev->sw & 0xef) & (c ? 0xf3 : 0xfc)) | (0x02 << (c << 1)); + else if (drive->tracks == 615) { + if (drive->hpc == 6) + dev->sw = (dev->sw & (c ? 0xf3 : 0xfc)) | (0x01 << (c << 1)); + else + dev->sw = (dev->sw & (c ? 0xf3 : 0xfc)) | (0x03 << (c << 1)); + } else if (drive->tracks == 612) + dev->sw = (dev->sw & (c ? 0xf3 : 0xfc)) | (0x00 << (c << 1)); + else + dev->sw = (dev->sw & (c ? 0xf3 : 0xfc)) | (0x02 << (c << 1)); + } else if ((dev->type >= 3) && (dev->type <= 5)) { /* Bits 1, 0: - 1, 1 = 615/4/17 (20 MB); @@ -1418,11 +1470,25 @@ const device_t xta_wdxt150_device = { .config = wdxt150_config }; +const device_t xta_wdxt150_pc3086_device = { + .name = "WDXT-150 XTA Fixed Disk Controller (PC3086)", + .internal_name = "xta_wdxt150", + .flags = DEVICE_ISA, + .local = 1, + .init = xta_init, + .close = xta_close, + .reset = NULL, + .available = NULL /*xta_available*/, + .speed_changed = NULL, + .force_redraw = NULL, + .config = wdxt150_config +}; + const device_t xta_hd20_device = { .name = "EuroPC HD20 Fixed Disk Controller", .internal_name = "xta_hd20", .flags = DEVICE_ISA, - .local = 1, + .local = 2, .init = xta_init, .close = xta_close, .reset = NULL, @@ -1436,7 +1502,7 @@ const device_t xta_st50x_device = { .name = "ST-50X Fixed Disk Controller", .internal_name = "xta_st50x", .flags = DEVICE_ISA, - .local = 2, + .local = 3, .init = xta_st50x_init, .close = xta_st50x_close, .reset = NULL, @@ -1447,10 +1513,10 @@ const device_t xta_st50x_device = { }; const device_t xta_st50x_pc5086_device = { - .name = "ST-50X Fixed Disk Controller (PC5086)", + .name = "ST-50X Fixed Disk Controller (PC5086)", .internal_name = "xta_st50x_pc5086", .flags = DEVICE_ISA, - .local = 3, + .local = 5, .init = xta_init, .close = xta_close, .reset = NULL, diff --git a/src/machine/m_ps1_hdc.c b/src/disk/hdc_xta_ps1.c similarity index 100% rename from src/machine/m_ps1_hdc.c rename to src/disk/hdc_xta_ps1.c diff --git a/src/disk/mo.c b/src/disk/mo.c index c1f95c073..b287f68a0 100644 --- a/src/disk/mo.c +++ b/src/disk/mo.c @@ -2016,7 +2016,7 @@ mo_get_max(UNUSED(const ide_t *ide), const int ide_has_dma, const int type) switch (type) { case TYPE_PIO: - ret = ide_has_dma ? 3 : 0; + ret = 3; break; case TYPE_SDMA: default: @@ -2043,10 +2043,10 @@ mo_get_timings(UNUSED(const ide_t *ide), const int ide_has_dma, const int type) ret = ide_has_dma ? 0x96 : 0; break; case TIMINGS_PIO: - ret = ide_has_dma ? 0xb4 : 0; + ret = 0xf0; break; case TIMINGS_PIO_FC: - ret = ide_has_dma ? 0xb4 : 0; + ret = 0xb4; break; default: ret = 0; diff --git a/src/disk/rdisk.c b/src/disk/rdisk.c index 5780740ad..b51dc4e66 100644 --- a/src/disk/rdisk.c +++ b/src/disk/rdisk.c @@ -2090,7 +2090,7 @@ rdisk_get_max(UNUSED(const ide_t *ide), const int ide_has_dma, const int type) switch (type) { case TYPE_PIO: - ret = ide_has_dma ? 3 : 0; + ret = 3; break; case TYPE_SDMA: default: @@ -2117,10 +2117,10 @@ rdisk_get_timings(UNUSED(const ide_t *ide), const int ide_has_dma, const int typ ret = ide_has_dma ? 0x96 : 0; break; case TIMINGS_PIO: - ret = ide_has_dma ? 0xb4 : 0; + ret = 0xf0; break; case TIMINGS_PIO_FC: - ret = ide_has_dma ? 0xb4 : 0; + ret = 0xb4; break; default: ret = 0; diff --git a/src/game/gameport.c b/src/game/gameport.c index 45f34f1e1..f17e39efe 100644 --- a/src/game/gameport.c +++ b/src/game/gameport.c @@ -65,7 +65,7 @@ typedef struct _joystick_instance_ { void *dat; } joystick_instance_t; -int joystick_type = JS_TYPE_NONE; +int joystick_type[GAMEPORT_MAX] = { JS_TYPE_NONE, JS_TYPE_NONE }; static const joystick_t joystick_none = { .name = "None", @@ -299,17 +299,17 @@ timer_over(void *priv) } void -gameport_update_joystick_type(void) +gameport_update_joystick_type(uint8_t gp) { /* Add a standalone game port if a joystick is enabled but no other game ports exist. */ if (standalone_gameport_type) gameport_add(standalone_gameport_type); /* Reset the joystick interface. */ - if (joystick_instance[0]) { - joystick_instance[0]->intf->close(joystick_instance[0]->dat); - joystick_instance[0]->intf = joysticks[joystick_type].joystick; - joystick_instance[0]->dat = joystick_instance[0]->intf->init(); + if (joystick_instance[gp]) { + joystick_instance[gp]->intf->close(joystick_instance[gp]->dat); + joystick_instance[gp]->intf = joysticks[joystick_type[gp]].joystick; + joystick_instance[gp]->dat = joystick_instance[gp]->intf->init(); } } @@ -393,24 +393,27 @@ gameport_init(const device_t *info) { gameport_t *dev = calloc(1, sizeof(gameport_t)); + // TODO: Later we'll actually support more than one gameport + uint8_t joy_insn = 0; + /* Allocate global instance. */ - if (!joystick_instance[0] && joystick_type) { - joystick_instance[0] = calloc(1, sizeof(joystick_instance_t)); + if (!joystick_instance[joy_insn] && joystick_type[joy_insn]) { + joystick_instance[joy_insn] = calloc(1, sizeof(joystick_instance_t)); // For each analog joystick axis for (uint8_t i = 0; i < 4; i++) { - joystick_instance[0]->axis[i].joystick = joystick_instance[0]; + joystick_instance[joy_insn]->axis[i].joystick = joystick_instance[joy_insn]; - joystick_instance[0]->axis[i].axis_nr = i; + joystick_instance[joy_insn]->axis[i].axis_nr = i; - timer_add(&joystick_instance[0]->axis[i].timer, timer_over, &joystick_instance[0]->axis[i], 0); + timer_add(&joystick_instance[joy_insn]->axis[i].timer, timer_over, &joystick_instance[joy_insn]->axis[i], 0); } - joystick_instance[0]->intf = joysticks[joystick_type].joystick; - joystick_instance[0]->dat = joystick_instance[0]->intf->init(); + joystick_instance[joy_insn]->intf = joysticks[joystick_type[joy_insn]].joystick; + joystick_instance[joy_insn]->dat = joystick_instance[joy_insn]->intf->init(); } - dev->joystick = joystick_instance[0]; + dev->joystick = joystick_instance[joy_insn]; /* Map game port to the default address. Not applicable on PnP-only ports. */ dev->len = (info->local >> 16) & 0xff; @@ -475,15 +478,18 @@ gameport_close(void *priv) { gameport_t *dev = (gameport_t *) priv; + // TODO: Later we'll actually support more than one gameport + uint8_t joy_insn = 0; + /* If this port was active, remove it from the active ports list. */ gameport_remap(dev, 0); /* Free the global instance here, if it wasn't already freed. */ - if (joystick_instance[0]) { - joystick_instance[0]->intf->close(joystick_instance[0]->dat); + if (joystick_instance[joy_insn]) { + joystick_instance[joy_insn]->intf->close(joystick_instance[joy_insn]->dat); - free(joystick_instance[0]); - joystick_instance[0] = NULL; + free(joystick_instance[joy_insn]); + joystick_instance[joy_insn] = NULL; } free(dev); @@ -793,7 +799,7 @@ gameport_available(int port) /* UI */ const device_t * -gameport_getdevice(int port) +gameport_get_device(int port) { return (gameports[port].device); } diff --git a/src/include/86box/86box.h b/src/include/86box/86box.h index faa04249e..521e50965 100644 --- a/src/include/86box/86box.h +++ b/src/include/86box/86box.h @@ -38,9 +38,12 @@ #define SCREEN_RES_Y 480 /* Filename and pathname info. */ -#define CONFIG_FILE "86box.cfg" -#define NVR_PATH "nvr" -#define SCREENSHOT_PATH "screenshots" +#define CONFIG_FILE "86box.cfg" +#define GLOBAL_CONFIG_FILE "86box_global.cfg" +#define NVR_PATH "nvr" +#define SCREENSHOT_PATH "screenshots" +#define VMM_PATH "Virtual Machines" +#define VMM_PATH_WINDOWS "86Box VMs" /* Recently used images */ #define MAX_PREV_IMAGES 10 @@ -115,16 +118,21 @@ extern uint64_t instru_run_ms; #define window_y monitor_settings[0].mon_window_y #define window_w monitor_settings[0].mon_window_w #define window_h monitor_settings[0].mon_window_h -extern int inhibit_multimedia_keys; /* (C) Inhibit multimedia keys on Windows. */ +extern int inhibit_multimedia_keys; /* (G) Inhibit multimedia keys on Windows. */ extern int window_remember; extern int vid_resize; /* (C) allow resizing */ extern int invert_display; /* (C) invert the display */ extern int suppress_overscan; /* (C) suppress overscans */ -extern int lang_id; /* (C) language id */ +extern int lang_id; /* (G) language id */ extern int scale; /* (C) screen scale factor */ extern int dpi_scale; /* (C) DPI scaling of the emulated screen */ extern int vid_api; /* (C) video renderer */ extern int vid_cga_contrast; /* (C) video */ +extern int vid_cga_comp_brightness; /* (C) CGA composite brightness */ +extern int vid_cga_comp_sharpness; /* (C) CGA composite sharpness */ +extern int vid_cga_comp_hue; /* (C) CGA composite hue */ +extern int vid_cga_comp_saturation; /* (C) CGA composite saturation */ +extern int vid_cga_comp_contrast; /* (C) CGA composite saturation */ extern int video_fullscreen; /* (C) video */ extern int video_fullscreen_scale; /* (C) video */ extern int enable_overscan; /* (C) video */ @@ -154,11 +162,12 @@ extern int fpu_type; /* (C) fpu type */ extern int fpu_softfloat; /* (C) fpu uses softfloat */ extern int time_sync; /* (C) enable time sync */ extern int hdd_format_type; /* (C) hard disk file format */ -extern int confirm_reset; /* (C) enable reset confirmation */ -extern int confirm_exit; /* (C) enable exit confirmation */ -extern int confirm_save; /* (C) enable save confirmation */ +extern int confirm_reset; /* (G) enable reset confirmation */ +extern int confirm_exit; /* (G) enable exit confirmation */ +extern int confirm_save; /* (G) enable save confirmation */ extern int enable_discord; /* (C) enable Discord integration */ extern int force_10ms; /* (C) force 10ms CPU frame interval */ +extern int jumpered_internal_ecp_dma; /* (C) Jumpered internal EPC DMA */ extern int other_ide_present; /* IDE controllers from non-IDE cards are present */ extern int other_scsi_present; /* SCSI controllers from non-SCSI cards are present */ extern int is_pcjr; /* The current machine is PCjr. */ @@ -169,7 +178,8 @@ extern int fixed_size_y; extern int sound_muted; /* (C) Is sound muted? */ extern int do_auto_pause; /* (C) Auto-pause the emulator on focus loss */ extern int auto_paused; -extern double mouse_sensitivity; /* (C) Mouse sensitivity scale */ +extern int force_constant_mouse; /* (C) Force constant updating of the mouse */ +extern double mouse_sensitivity; /* (G) Mouse sensitivity scale */ #ifdef _Atomic extern _Atomic double mouse_x_error; /* Mouse error accumulator - Y */ extern _Atomic double mouse_y_error; /* Mouse error accumulator - Y */ @@ -177,15 +187,20 @@ extern _Atomic double mouse_y_error; /* Mouse error accumulator - Y */ extern int pit_mode; /* (C) force setting PIT mode */ extern int fm_driver; /* (C) select FM sound driver */ extern int hook_enabled; /* (C) Keyboard hook is enabled */ +extern int vmm_disabled; /* (G) disable built-in manager */ +extern char vmm_path_cfg[1024]; /* (G) VMs path (unless -E is used) */ -extern char exe_path[2048]; /* path (dir) of executable */ -extern char usr_path[1024]; /* path (dir) of user data */ -extern char cfg_path[1024]; /* full path of config file */ +extern char exe_path[2048]; /* path (dir) of executable */ +extern char usr_path[1024]; /* path (dir) of user data */ +extern char cfg_path[1024]; /* full path of config file */ extern char global_cfg_path[1024]; /* full path of global config file */ -extern int open_dir_usr_path; /* default file open dialog directory of usr_path */ -extern char uuid[MAX_UUID_LEN]; /* UUID or machine identifier */ -extern char vmm_path[1024]; /* VM Manager path to scan (temporary) */ -extern int vmm_enabled; +extern int open_dir_usr_path; /* default file open dialog directory of usr_path */ +extern char uuid[MAX_UUID_LEN]; /* UUID or machine identifier */ +extern char vmm_path[1024]; /* VM Manager path to scan */ +extern int start_vmm; /* the current execution will start the manager */ +extern int portable_mode; /* we are running in portable mode + (global dirs = exe path) */ + #ifndef USE_NEW_DYNAREC extern FILE *stdlog; /* file to log output to */ #endif @@ -213,6 +228,7 @@ extern void update_mouse_msg(void); #if 0 extern void pc_reload(wchar_t *fn); #endif +extern int pc_init_roms(void); extern int pc_init_modules(void); extern int pc_init(int argc, char *argv[]); extern void pc_close(void *threadid); diff --git a/src/include/86box/chipset.h b/src/include/86box/chipset.h index 7ee8182ea..9cd037d1f 100644 --- a/src/include/86box/chipset.h +++ b/src/include/86box/chipset.h @@ -42,6 +42,8 @@ extern const device_t amd640_device; extern const device_t isa486c_device; /* Compaq */ +extern const device_t compaq_device; + extern const device_t compaq_386_device; extern const device_t compaq_genoa_device; @@ -64,6 +66,9 @@ extern const device_t cs4031_device; extern const device_t gc100_device; extern const device_t gc100a_device; +/* GRiDcase */ +extern const device_t grid1520_device; + /* Headland */ extern const device_t headland_gc10x_device; extern const device_t headland_gc113_device; @@ -114,6 +119,10 @@ extern const device_t slc90e66_device; extern const device_t ioapic_device; +/* VTech */ +extern const device_t laserxt_device; +extern const device_t lxt3_device; + /* Olivetti */ extern const device_t olivetti_eva_device; @@ -126,6 +135,7 @@ extern const device_t opti481_device; extern const device_t opti493_device; extern const device_t opti495slc_device; extern const device_t opti495sx_device; +extern const device_t opti496_device; extern const device_t opti498_device; extern const device_t opti499_device; extern const device_t opti601_device; @@ -138,6 +148,12 @@ extern const device_t opti895_device; extern const device_t opti5x7_device; extern const device_t opti5x7_pci_device; +/* Philips */ +extern const device_t philips_device; + +/* Sanyo */ +extern const device_t sanyo_device; + /* SiS */ extern const device_t rabbit_device; extern const device_t sis_85c401_device; @@ -212,4 +228,8 @@ extern const device_t nec_mate_unk_device; extern const device_t phoenix_486_jumper_device; extern const device_t phoenix_486_jumper_pci_device; + +extern const device_t radisys_config_device; + +extern const device_t zenith_scratchpad_device; #endif /*EMU_CHIPSET_H*/ diff --git a/src/include/86box/config.h b/src/include/86box/config.h index b2391527a..507c506f0 100644 --- a/src/include/86box/config.h +++ b/src/include/86box/config.h @@ -137,7 +137,9 @@ typedef struct config_t { } config_t; #endif +extern void config_load_global(void); extern void config_load(void); +extern void config_save_global(void); extern void config_save(void); #ifdef EMU_INI_H diff --git a/src/include/86box/gameport.h b/src/include/86box/gameport.h index a990d018e..f9d7810e0 100644 --- a/src/include/86box/gameport.h +++ b/src/include/86box/gameport.h @@ -119,7 +119,7 @@ extern "C" { extern int gameport_available(int port); #ifdef EMU_DEVICE_H -extern const device_t *gameport_getdevice(int port); +extern const device_t *gameport_get_device(int port); #endif extern int gameport_has_config(int port); extern const char *gameport_get_internal_name(int port); @@ -151,11 +151,11 @@ extern plat_joystick_state_t plat_joystick_state[MAX_PLAT_JOYSTICKS]; extern joystick_state_t joystick_state[GAMEPORT_MAX][MAX_JOYSTICKS]; extern int joysticks_present; -extern int joystick_type; +extern int joystick_type[GAMEPORT_MAX]; extern void joystick_init(void); extern void joystick_close(void); -extern void joystick_process(void); +extern void joystick_process(uint8_t gp); extern const char *joystick_get_name(int js); extern const char *joystick_get_internal_name(int js); @@ -168,7 +168,7 @@ extern const char *joystick_get_axis_name(int js, int id); extern const char *joystick_get_button_name(int js, int id); extern const char *joystick_get_pov_name(int js, int id); -extern void gameport_update_joystick_type(void); +extern void gameport_update_joystick_type(uint8_t gp); extern void gameport_remap(void *priv, uint16_t address); extern void *gameport_add(const device_t *gameport_type); diff --git a/src/include/86box/hdc.h b/src/include/86box/hdc.h index c308078a5..26fed9b0a 100644 --- a/src/include/86box/hdc.h +++ b/src/include/86box/hdc.h @@ -106,9 +106,10 @@ extern const device_t ide_qua_pnp_device; extern const device_t mcide_device; extern const device_t xta_wdxt150_device; /* xta_wdxt150 */ +extern const device_t xta_wdxt150_pc3086_device; /* xta_wdxt150 (PC3086) */ extern const device_t xta_hd20_device; /* EuroPC internal */ extern const device_t xta_st50x_device; /* ST-50X */ -extern const device_t xta_st50x_pc5086_device; /* ST-50X (PC-5086) */ +extern const device_t xta_st50x_pc5086_device; /* ST-50X (PC5086) */ extern const device_t xtide_device; /* xtide_xt */ extern const device_t xtide_at_device; /* xtide_at */ diff --git a/src/include/86box/keyboard.h b/src/include/86box/keyboard.h index 86cea515e..8220799fc 100644 --- a/src/include/86box/keyboard.h +++ b/src/include/86box/keyboard.h @@ -118,101 +118,42 @@ typedef struct scancode { const uint8_t brk[4]; } scancode; -#define STATE_SHIFT_MASK 0x22 -#define STATE_RSHIFT 0x20 -#define STATE_LSHIFT 0x02 +#define STATE_SHIFT_MASK 0x22 +#define STATE_RSHIFT 0x20 +#define STATE_LSHIFT 0x02 -#define FAKE_LSHIFT_ON 0x100 -#define FAKE_LSHIFT_OFF 0x101 -#define LSHIFT_ON 0x102 -#define LSHIFT_OFF 0x103 -#define RSHIFT_ON 0x104 -#define RSHIFT_OFF 0x105 +#define FAKE_LSHIFT_ON 0x100 +#define FAKE_LSHIFT_OFF 0x101 +#define LSHIFT_ON 0x102 +#define LSHIFT_OFF 0x103 +#define RSHIFT_ON 0x104 +#define RSHIFT_OFF 0x105 -/* KBC #define's */ -/* IBM-style controllers */ -#define KBC_IBM_PC_XT 0x0000 /* IBM PC/XT */ -#define KBC_IBM_PCJR 0x0001 /* IBM PCjr */ -#define KBC_IBM_TYPE_1 0x0002 /* IBM AT / PS/2 Type 1 */ -#define KBC_IBM_TYPE_2 0x0003 /* IBM PS/2 Type 2 */ -#define KBC_AMI_ACCESS_METHODS 0x0004 /* Access Methods AMI */ -#define KBC_JU_JET 0x0005 /* Ju-Jet */ -/* OEM proprietary */ -#define KBC_TANDY 0x0011 /* Tandy 1000/1000HX */ -#define KBC_TANDY_SL2 0x0012 /* Tandy 1000SL2 */ -#define KBC_AMSTRAD 0x0013 /* Amstrad */ -#define KBC_OLIVETTI_XT 0x0014 /* Olivetti XT */ -#define KBC_OLIVETTI 0x0015 /* Olivetti AT */ -#define KBC_TOSHIBA 0x0016 /* Toshiba AT */ -#define KBC_COMPAQ 0x0017 /* Compaq */ -#define KBC_NCR 0x0018 /* NCR */ -#define KBC_QUADTEL 0x0019 /* Quadtel */ -#define KBC_SIEMENS 0x001A /* Siemens */ -/* Phoenix MultiKey/42 */ -#define PHOENIX_MK42_105 0x0521 /* Phoenix MultiKey/42 1.05 */ -#define PHOENIX_MK42_129 0x2921 /* Phoenix MultiKey/42 1.29 */ -#define PHOENIX_MK42_138 0x3821 /* Phoenix MultiKey/42 1.38 */ -#define PHOENIX_MK42_140 0x3821 /* Phoenix MultiKey/42 1.40 */ -#define PHOENIX_MKC42_214 0x1422 /* Phoenix MultiKey/C42 2.14 */ -#define PHOENIX_MK42I_416 0x1624 /* Phoenix MultiKey/42i 4.16 */ -#define PHOENIX_MK42I_419 0x1924 /* Phoenix MultiKey/42i 4.19 */ -/* AMI 0x3x */ -#define KBC_ACER_V30 0x0030 /* Acer (0xA1 returns nothing, 0xAF returns 0x00) */ -#define KBC_AMI_MEGAKEY_SUPER_IO 0x0035 /* AMI '5' MegaKey 1994 NSC (and SM(S)C?) */ -#define KBC_AMI_8 0x0038 /* AMI '8' */ -/* AMI 0x4x */ -#define KBC_AMI_B 0x0042 /* AMI 'B' */ -#define KBC_AMI_D 0x0044 /* AMI 'D' */ -#define KBC_AMI_E 0x0045 /* AMI 'E' */ -#define KBC_AMIKEY 0x0046 /* AMI 'F'/AMIKEY */ -#define KBC_AMIKEY_2 0x0048 /* AMI 'H'/AMIEY-2 */ -#define KBC_MR 0x004D /* MR 'M' - Temporary classification until we get a dump */ -/* AMI 0x5x */ -#define KBC_AMI_MEGAKEY_1993 0x0050 /* AMI 'P' MegaKey 1993 */ -#define KBC_AMI_MEGAKEY_1994 0x0052 /* AMI 'R' MegaKey 1994 - 0xA0 returns 1993 copyright */ -#define KBC_AMI_TRIGEM 0x005A /* TriGem AMI 'Z' (1990 AMI copyright) */ -/* AMI 0x6x */ -#define KBC_TANDON 0x0061 /* Tandon 'a' - Temporary classification until we get a dump */ -/* Holtek */ -#define KBC_HT_REGIONAL_6542 0x1046 /* Holtek 'F' (Regional 6542) */ -#define KBC_HT_HT6542B_BESTKEY 0x1048 /* Holtek 'H' (Holtek HT6542B, BestKey) */ -/* AMI 0x0x clone without command 0xA0 */ -#define KBC_UNK_00 0x2000 /* Unknown 0x00 */ -#define KBC_UNK_01 0x2001 /* Unknown 0x01 */ -/* AMI 0x3x clone without command 0xA0 */ -#define KBC_UNK_7 0x2037 /* Unknown '7' - Temporary classification until we get a dump */ -#define KBC_UNK_9 0x2037 /* Unknown '9' - Temporary classification until we get a dump */ -#define KBC_JETKEY_NO_VER 0x2038 /* No-version JetKey '8' */ -/* AMI 0x4x clone without command 0xA0 */ -#define KBC_UNK_A 0x2041 /* Unknown 'A' - Temporary classification until we get a dump */ -#define KBC_JETKEY_5_W83C42 0x2046 /* JetKey 5.0 'F' and Winbond W83C42 */ -#define KBC_UNK_G 0x2047 /* Unknown 'G' - Temporary classification until we get a dump */ -#define KBC_MB_300E_SIS 0x2048 /* MB-300E Non-VIA 'H' and SiS 5582/559x */ -#define KBC_UNK_L 0x204C /* Unknown 'L' - Temporary classification until we get a dump */ -/* AMI 0x0x clone with command 0xA0 (Get Copyright String) only returning 0x00 */ -#define KBC_VPC_2007 0x3000 /* Microsoft Virtual PC 2007 - everything returns 0x00 */ -/* AMI 0x4x clone with command 0xA0 (Get Copyright String) only returning 0x00 */ -#define KBC_ALI_M148X 0x3045 /* ALi M148x 'E'/'U' (0xA1 actually returns 'F' but BIOS shows 'E' or 'U') */ -#define KBC_LANCE_UTRON 0x3046 /* Lance LT38C41 'F', Utron */ -/* AMI 0x5x clone with command 0xA0 (Get Copyright String) only returning 0x00 */ -#define KBC_SARC_6042 0x3055 /* SARC 6042 'U' */ -/* Award and clones */ -#define KBC_AWARD 0x4200 /* Award (0xA1 returns 0x00) - Temporary classification until we get \ - the real 0xAF return */ -#define KBC_VIA_VT82C4XN 0x4246 /* VIA VT82C41N, VT82C4N (0xA1 returns 'F') */ -#define KBC_VIA_VT82C586A 0x4346 /* VIA VT82C586A (0xA1 returns 'F') */ -#define KBC_VIA_VT82C586B 0x4446 /* VIA VT82C586B (0xA1 returns 'F') */ -#define KBC_VIA_VT82C686B 0x4546 /* VIA VT82C686B (0xA1 returns 'F') */ -/* UMC */ -#define KBC_UMC_UM8886 0x5048 /* UMC UM8886 'H' */ -/* IBM-style controllers with inverted P1 video type bit polarity */ -#define KBC_IBM_TYPE_1_XI8088 0x8000 /* Xi8088: IBM Type 1 */ -/* AMI (this is the 0xA1 revision byte) with inverted P1 video type bit polarity */ -#define KBC_ACER_V30_INV 0x8030 /* Acer (0xA1 returns nothing, 0xAF returns 0x00) */ -/* Holtek with inverted P1 video type bit polarity */ -#define KBC_HT_HT6542B_XI8088 0x9048 /* Xi8088: Holtek 'H' (Holtek HT6542B, BestKey) */ -/* Award and clones with inverted P1 video type bit polarity */ -#define KBC_VIA_VT82C4XN_XI8088 0xC246 /* Xi8088: VIA VT82C41N, VT82C4N (0xA1 returns 'F') */ +#define KBC_VEN_GENERIC 0x00 +#define KBC_VEN_ACER 0x01 +#define KBC_VEN_ALI 0x02 +#define KBC_VEN_AMI 0x03 +#define KBC_VEN_AMI_TRIGEM 0x04 +#define KBC_VEN_AWARD 0x05 +#define KBC_VEN_CHIPS 0x06 +#define KBC_VEN_COMPAQ 0x07 +#define KBC_VEN_HOLTEK 0x08 +#define KBC_VEN_IBM 0x09 +#define KBC_VEN_NCR 0x0a +#define KBC_VEN_OLIVETTI 0x0b +#define KBC_VEN_QUADTEL 0x0c +#define KBC_VEN_PHOENIX 0x0d +#define KBC_VEN_SIEMENS 0x0e +#define KBC_VEN_TOSHIBA 0x0f +#define KBC_VEN_VIA 0x10 +#define KBC_VEN_UMC 0x11 +#define KBC_VEN_SIS 0x12 +#define KBC_VEN_MASK 0x1f + +#define KBC_FLAG_IS_ASIC 0x80000000 +#define KBC_FLAG_IS_CLONE 0x40000000 +#define KBC_FLAG_IS_GREEN 0x20000000 +#define KBC_FLAG_IS_TYPE2 0x10000000 #ifdef __cplusplus extern "C" { @@ -256,36 +197,8 @@ extern const device_t kbc_xt_zenith_device; extern const device_t kbc_xt_hyundai_device; extern const device_t kbc_xt_fe2010_device; extern const device_t kbc_xtclone_device; + extern const device_t kbc_at_device; -extern const device_t kbc_at_ami_device; -extern const device_t kbc_at_compaq_device; -extern const device_t kbc_at_phoenix_device; -extern const device_t kbc_at_ncr_device; -extern const device_t kbc_at_olivetti_device; -extern const device_t kbc_at_siemens_device; -extern const device_t kbc_at_tg_ami_device; -extern const device_t kbc_at_toshiba_device; -extern const device_t kbc_ps2_device; -extern const device_t kbc_ps2_ps1_device; -extern const device_t kbc_ps2_ps1_pci_device; -extern const device_t kbc_ps2_xi8088_device; -extern const device_t kbc_ps2_ami_device; -extern const device_t kbc_ps2_compaq_device; -extern const device_t kbc_ps2_holtek_device; -extern const device_t kbc_ps2_mca_1_device; -extern const device_t kbc_ps2_mca_2_device; -extern const device_t kbc_ps2_olivetti_device; -extern const device_t kbc_ps2_phoenix_device; -extern const device_t kbc_ps2_quadtel_device; -extern const device_t kbc_ps2_tg_ami_device; -extern const device_t kbc_ps2_tg_ami_green_device; -extern const device_t kbc_ps2_pci_device; -extern const device_t kbc_ps2_ami_pci_device; -extern const device_t kbc_ps2_intel_ami_pci_device; -extern const device_t kbc_ps2_acer_pci_device; -extern const device_t kbc_ps2_ali_pci_device; -extern const device_t kbc_ps2_phoenix_pci_device; -extern const device_t kbc_ps2_tg_ami_pci_device; extern const device_t keyboard_pc_xt_device; extern const device_t keyboard_at_device; diff --git a/src/include/86box/lpt.h b/src/include/86box/lpt.h index d2bf72867..037c31a44 100644 --- a/src/include/86box/lpt.h +++ b/src/include/86box/lpt.h @@ -139,6 +139,7 @@ extern void lpt_set_cnfgb_readout(lpt_t *dev, const uint8_t cnfgb extern void lpt_port_setup(lpt_t *dev, uint16_t port); extern void lpt_port_irq(lpt_t *dev, uint8_t irq); extern void lpt_port_dma(lpt_t *dev, uint8_t dma); +extern void lpt1_dma(const uint8_t dma); extern void lpt_port_remove(lpt_t *dev); extern void lpt1_remove_ams(lpt_t *dev); diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 1eb51bbba..acba9cd45 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -8,15 +8,15 @@ * * Handling of the emulated machines. * - * - * * Authors: Sarah Walker, * Miran Grca, * Fred N. van Kempen, + * Jasmine Iwanek, * * Copyright 2008-2020 Sarah Walker. - * Copyright 2016-2020 Miran Grca. + * Copyright 2016-2025 Miran Grca. * Copyright 2017-2020 Fred N. van Kempen. + * Copyright 2025 Jasmine Iwanek. */ #ifndef EMU_MACHINE_H @@ -143,6 +143,24 @@ #define MACHINE_PIIX3 (MACHINE_PIIX | MACHINE_USB) #define MACHINE_PIIX4 (MACHINE_PIIX3 | MACHINE_ACPI) +#define MACHINE_DMA_0 0x00000001 +#define MACHINE_DMA_1 0x00000002 +#define MACHINE_DMA_2 0x00000004 +#define MACHINE_DMA_3 0x00000008 +#define MACHINE_DMA_DISABLED 0x00000010 +#define MACHINE_DMA_5 0x00000020 +#define MACHINE_DMA_6 0x00000040 +#define MACHINE_DMA_7 0x00000080 +#define MACHINE_DMA_JUMPERS_MASK (MACHINE_DMA_0 | MACHINE_DMA_1 | MACHINE_DMA_2 | MACHINE_DMA_3 | \ + MACHINE_DMA_DISABLED | MACHINE_DMA_5 | MACHINE_DMA_6 | MACHINE_DMA_7) +#define MACHINE_DMA_USE_MBDMA 0x00000100 +#define MACHINE_DMA_USE_CONFIG 0x00000200 +#define MACHINE_DMA_EXT_CONFIG (MACHINE_DMA_USE_MBDMA | MACHINE_DMA_USE_CONFIG) + +#define DMA_DISABLED 4 +#define DMA_NONE -1 +#define DMA_ANY -1 + #define IS_ARCH(m, a) ((machines[m].bus_flags & (a)) ? 1 : 0) #define IS_AT(m) (((machines[m].bus_flags & (MACHINE_BUS_ISA16 | MACHINE_BUS_EISA | MACHINE_BUS_VLB | MACHINE_BUS_MCA | MACHINE_BUS_PCI | MACHINE_BUS_PCMCIA | MACHINE_BUS_AGP | MACHINE_BUS_AC97)) && !(machines[m].bus_flags & MACHINE_PC98)) ? 1 : 0) @@ -178,6 +196,7 @@ enum { MACHINE_TYPE_486_S3_PCI, MACHINE_TYPE_486_MISC, MACHINE_TYPE_SOCKET4, + MACHINE_TYPE_SOCKET4_5, MACHINE_TYPE_SOCKET5, MACHINE_TYPE_SOCKET7_3V, MACHINE_TYPE_SOCKET7, @@ -245,6 +264,7 @@ enum { MACHINE_CHIPSET_OPTI_493, MACHINE_CHIPSET_OPTI_495SLC, MACHINE_CHIPSET_OPTI_495SX, + MACHINE_CHIPSET_OPTI_496, MACHINE_CHIPSET_OPTI_498, MACHINE_CHIPSET_OPTI_499, MACHINE_CHIPSET_OPTI_895_802G, @@ -318,7 +338,7 @@ typedef struct _machine_ { uint32_t type; uintptr_t chipset; int (*init)(const struct _machine_ *); - uint8_t (*p1_handler)(uint8_t write, uint8_t val); + uint8_t (*p1_handler)(void); uint32_t (*gpio_handler)(uint8_t write, uint32_t val); uintptr_t available_flag; uint32_t (*gpio_acpi_handler)(uint8_t write, uint32_t val); @@ -328,6 +348,8 @@ typedef struct _machine_ { const machine_memory_t ram; int ram_granularity; int nvrmask; + int jumpered_ecp_dma; + int default_jumpered_ecp_dma; #ifdef EMU_DEVICE_H const device_t *kbc_device; #else @@ -366,14 +388,14 @@ extern int machine; extern void * machine_snd; /* Core functions. */ -extern int machine_count(void); -extern int machine_available(int m); -extern const char *machine_getname(void); -extern const char *machine_getname_ex(int m); -extern const char *machine_get_internal_name(void); -extern const char *machine_get_nvr_name(void); -extern int machine_get_machine_from_internal_name(const char *s); -extern void machine_init(void); +extern int machine_count(void); +extern int machine_available(int m); +extern const char * machine_getname(void); +extern const char * machine_getname_ex(int m); +extern const char * machine_get_internal_name(void); +extern const char * machine_get_nvr_name(void); +extern int machine_get_machine_from_internal_name(const 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); @@ -383,680 +405,938 @@ 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 const char *machine_get_internal_name_ex(int m); -extern const char *machine_get_nvr_name_ex(int m); -extern int machine_get_nvrmask(int m); -extern int machine_has_flags(int m, int flags); -extern int machine_has_bus(int m, int bus_flags); -extern int machine_has_cartridge(int m); -extern int machine_get_min_ram(int m); -extern int machine_get_max_ram(int m); -extern int machine_get_ram_granularity(int m); -extern int machine_get_type(int m); -extern int machine_get_chipset(int m); -extern void machine_close(void); -extern int machine_has_mouse(void); -extern int machine_is_sony(void); +extern const char * machine_get_internal_name_ex(int m); +extern const char * machine_get_nvr_name_ex(int m); +extern int machine_get_nvrmask(int m); +extern int machine_has_flags(int m, int flags); +extern void machine_set_ps2(void); +extern void machine_force_ps2(int is_ps2); +extern int machine_has_flags_ex(int flags); +extern int machine_has_bus(int m, int bus_flags); +extern int machine_has_cartridge(int m); +extern int machine_has_jumpered_ecp_dma(int m, int dma); +extern int machine_get_default_jumpered_ecp_dma(int m); +extern int machine_map_jumpered_ecp_dma(int dma); +extern const char * machine_get_jumpered_ecp_dma_name(int dma); +extern int machine_get_min_ram(int m); +extern int machine_get_max_ram(int m); +extern int machine_get_ram_granularity(int m); +extern int machine_get_type(int m); +extern int machine_get_chipset(int m); +extern void machine_close(void); +extern int machine_has_mouse(void); +extern int machine_is_sony(void); -extern uint8_t machine_get_p1_default(void); -extern uint8_t machine_get_p1(void); -extern void machine_set_p1_default(uint8_t val); -extern void machine_set_p1(uint8_t val); -extern void machine_and_p1(uint8_t val); -extern void machine_init_p1(void); -extern uint8_t machine_handle_p1(uint8_t write, uint8_t val); -extern uint32_t machine_get_gpio_default(void); -extern uint32_t machine_get_gpio(void); -extern void machine_set_gpio_default(uint32_t val); -extern void machine_set_gpio(uint32_t val); -extern void machine_and_gpio(uint32_t val); -extern void machine_init_gpio(void); -extern uint32_t machine_handle_gpio(uint8_t write, uint32_t val); -extern uint32_t machine_get_gpio_acpi_default(void); -extern uint32_t machine_get_gpio_acpi(void); -extern void machine_set_gpio_acpi_default(uint32_t val); -extern void machine_set_gpio_acpi(uint32_t val); -extern void machine_and_gpio_acpi(uint32_t val); -extern void machine_init_gpio_acpi(void); -extern uint32_t machine_handle_gpio_acpi(uint8_t write, uint32_t val); +extern uint8_t machine_compaq_p1_handler(void); +extern uint8_t machine_generic_p1_handler(void); +extern uint8_t machine_ncr_p1_handler(void); +extern uint8_t machine_ps1_p1_handler(void); +extern uint8_t machine_t3100e_p1_handler(void); + +extern uint8_t machine_get_p1_default(void); +extern void machine_set_p1_default(uint8_t val); +extern void machine_set_p1(uint8_t val); +extern void machine_and_p1(uint8_t val); +extern void machine_init_p1(void); +extern uint8_t machine_handle_p1(uint8_t write, uint8_t val); +extern uint8_t machine_get_p1(uint8_t kbc_p1); +extern uint32_t machine_get_gpio_default(void); +extern uint32_t machine_get_gpio(void); +extern void machine_set_gpio_default(uint32_t val); +extern void machine_set_gpio(uint32_t val); +extern void machine_and_gpio(uint32_t val); +extern void machine_init_gpio(void); +extern uint32_t machine_handle_gpio(uint8_t write, uint32_t val); +extern uint32_t machine_get_gpio_acpi_default(void); +extern uint32_t machine_get_gpio_acpi(void); +extern void machine_set_gpio_acpi_default(uint32_t val); +extern void machine_set_gpio_acpi(uint32_t val); +extern void machine_and_gpio_acpi(uint32_t val); +extern void machine_init_gpio_acpi(void); +extern uint32_t machine_handle_gpio_acpi(uint8_t write, uint32_t val); /* Initialization functions for boards and systems. */ -extern void machine_common_init(const machine_t *); +extern void machine_common_init(const machine_t *); /* m_amstrad.c */ -extern int machine_pc1512_init(const machine_t *); -extern int machine_pc1640_init(const machine_t *); -extern int machine_pc200_init(const machine_t *); -extern int machine_ppc512_init(const machine_t *); -extern int machine_pc2086_init(const machine_t *); -extern int machine_pc3086_init(const machine_t *); - -/* m_at.c */ -extern void machine_at_common_init_ex(const machine_t *, int type); -extern void machine_at_common_init(const machine_t *); -extern void machine_at_init(const machine_t *); -extern void machine_at_ps2_init(const machine_t *); -extern void machine_at_common_ide_init(const machine_t *); -extern void machine_at_ibm_common_ide_init(const machine_t *); -extern void machine_at_ide_init(const machine_t *); -extern void machine_at_ps2_ide_init(const machine_t *); - -extern int machine_at_ibm_init(const machine_t *); - -// IBM AT with custom BIOS -extern int machine_at_ibmatami_init(const machine_t *); // IBM AT with AMI BIOS -extern int machine_at_ibmatpx_init(const machine_t *); // IBM AT with Phoenix BIOS -extern int machine_at_ibmatquadtel_init(const machine_t *); // IBM AT with Quadtel BIOS - -extern int machine_at_ibmxt286_init(const machine_t *); - -extern int machine_at_pb286_init(const machine_t *); - -extern int machine_at_siemens_init(const machine_t *); // Siemens PCD-2L. N82330 discrete machine. It segfaults in some places +#ifdef EMU_DEVICE_H +extern const device_t vid_1512_device; +#endif +extern int machine_pc1512_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t vid_1640_device; +#endif +extern int machine_pc1640_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t vid_200_device; +#endif +extern int machine_pc200_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t vid_ppc512_device; +#endif +extern int machine_ppc512_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t vid_pc2086_device; +#endif +extern int machine_pc2086_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t vid_pc3086_device; +#endif +extern int machine_pc3086_init(const machine_t *); /* m_at_286.c */ /* ISA */ -extern int machine_at_mr286_init(const machine_t *); -extern int machine_at_pc8_init(const machine_t *); -extern int machine_at_m290_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ibmat_device; +#endif +extern int machine_at_ibmat_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ibmxt286_device; +#endif +extern int machine_at_ibmxt286_init(const machine_t *); +/* IBM AT with AMI BIOS */ +extern int machine_at_ibmatami_init(const machine_t *); +extern int machine_at_cmdpc_init(const machine_t *); +extern int machine_at_portableii_init(const machine_t *); +extern int machine_at_portableiii_init(const machine_t *); +extern int machine_at_grid1520_init(const machine_t *); +extern int machine_at_mr286_init(const machine_t *); +extern int machine_at_pc8_init(const machine_t *); +extern int machine_at_m290_init(const machine_t *); +/* IBM AT with Phoenix BIOS */ +extern int machine_at_ibmatpx_init(const machine_t *); +/* IBM AT with Quadtel BIOS */ +extern int machine_at_ibmatquadtel_init(const machine_t *); +extern int machine_at_pb286_init(const machine_t *); +extern int machine_at_mbc17_init(const machine_t *); +extern int machine_at_ax286_init(const machine_t *); +/* Siemens PCD-2L. N82330 discrete machine. It segfaults in some places */ +extern int machine_at_siemens_init(const machine_t *); /* C&T PC/AT */ -extern int machine_at_dells200_init(const machine_t *); -extern int machine_at_super286c_init(const machine_t *); -extern int machine_at_at122_init(const machine_t *); -extern int machine_at_tuliptc7_init(const machine_t *); +extern int machine_at_dells200_init(const machine_t *); +extern int machine_at_super286c_init(const machine_t *); +extern int machine_at_at122_init(const machine_t *); +extern int machine_at_tuliptc7_init(const machine_t *); /* GC103 */ -extern int machine_at_quadt286_init(const machine_t *); -extern void machine_at_headland_common_init(const machine_t *model, int type); -extern int machine_at_tg286m_init(const machine_t *); +extern int machine_at_quadt286_init(const machine_t *); +extern void machine_at_headland_common_init(const machine_t *model, int type); +extern int machine_at_tg286m_init(const machine_t *); /* Wells American A*Star with custom award BIOS. */ -extern int machine_at_wellamerastar_init(const machine_t *); +extern int machine_at_wellamerastar_init(const machine_t *); /* NEAT */ -extern int machine_at_ataripc4_init(const machine_t *); -extern int machine_at_neat_ami_init(const machine_t *); -extern int machine_at_3302_init(const machine_t *); -extern int machine_at_px286_init(const machine_t *); +extern int machine_at_ataripc4_init(const machine_t *); +extern int machine_at_neat_ami_init(const machine_t *); +extern int machine_at_3302_init(const machine_t *); +extern int machine_at_px286_init(const machine_t *); + +/* SCAMP */ +extern int machine_at_pc7286_init(const machine_t *); /* SCAT */ -extern int machine_at_gw286ct_init(const machine_t *); -extern int machine_at_gdc212m_init(const machine_t *); -extern int machine_at_award286_init(const machine_t *); -extern int machine_at_super286tr_init(const machine_t *); -extern int machine_at_drsm35286_init(const machine_t *); -extern int machine_at_deskmaster286_init(const machine_t *); -extern int machine_at_spc4200p_init(const machine_t *); -extern int machine_at_spc4216p_init(const machine_t *); -extern int machine_at_spc4620p_init(const machine_t *); -extern int machine_at_senor_scat286_init(const machine_t *); +extern int machine_at_pc5286_init(const machine_t *); +extern int machine_at_gw286ct_init(const machine_t *); +extern int machine_at_gdc212m_init(const machine_t *); +extern int machine_at_award286_init(const machine_t *); +extern int machine_at_super286tr_init(const machine_t *); +extern int machine_at_drsm35286_init(const machine_t *); +extern int machine_at_deskmaster286_init(const machine_t *); +extern int machine_at_spc4200p_init(const machine_t *); +extern int machine_at_spc4216p_init(const machine_t *); +extern int machine_at_spc4620p_init(const machine_t *); +extern int machine_at_senor_scat286_init(const machine_t *); /* m_at_386sx.c */ /* ISA */ -extern int machine_at_pc916sx_init(const machine_t *); -extern int machine_at_quadt386sx_init(const machine_t *); +extern int machine_at_pc916sx_init(const machine_t *); +extern int machine_at_quadt386sx_init(const machine_t *); /* ACC 2036 */ -extern int machine_at_pbl300sx_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t pbl300sx_device; +#endif +extern int machine_at_pbl300sx_init(const machine_t *); /* ALi M1217 */ -extern int machine_at_arb1374_init(const machine_t *); -extern int machine_at_sbc350a_init(const machine_t *); -extern int machine_at_flytech386_init(const machine_t *); -extern int machine_at_325ax_init(const machine_t *); -extern int machine_at_mr1217_init(const machine_t *); +extern int machine_at_arb1374_init(const machine_t *); +extern int machine_at_sbc350a_init(const machine_t *); +extern int machine_at_flytech386_init(const machine_t *); +extern int machine_at_325ax_init(const machine_t *); +extern int machine_at_mr1217_init(const machine_t *); /* ALi M1409 */ -extern int machine_at_acer100t_init(const machine_t *); +extern int machine_at_acer100t_init(const machine_t *); /* HT18 */ -extern int machine_at_ama932j_init(const machine_t *); +extern int machine_at_ama932j_init(const machine_t *); /* Intel 82335 */ -extern int machine_at_adi386sx_init(const machine_t *); -extern int machine_at_shuttle386sx_init(const machine_t *); +extern int machine_at_adi386sx_init(const machine_t *); +extern int machine_at_shuttle386sx_init(const machine_t *); /* NEAT */ -extern int machine_at_cmdsl386sx16_init(const machine_t *); -extern int machine_at_neat_init(const machine_t *); +extern int machine_at_cmdsl386sx16_init(const machine_t *); +extern int machine_at_neat_init(const machine_t *); /* NEATsx */ -extern int machine_at_if386sx_init(const machine_t *); +extern int machine_at_if386sx_init(const machine_t *); + +/* OPTi 283 */ +extern int machine_at_svc386sxp1_init(const machine_t *); /* OPTi 291 */ -extern int machine_at_awardsx_init(const machine_t *); +extern int machine_at_awardsx_init(const machine_t *); /* SCAMP */ -extern int machine_at_cmdsl386sx25_init(const machine_t *); -extern int machine_at_dataexpert386sx_init(const machine_t *); -extern int machine_at_dells333sl_init(const machine_t *); -extern int machine_at_spc6033p_init(const machine_t *); +extern int machine_at_cmdsl386sx25_init(const machine_t *); +extern int machine_at_dataexpert386sx_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t dells333sl_device; +#endif +extern int machine_at_dells333sl_init(const machine_t *); +extern int machine_at_spc6033p_init(const machine_t *); /* SCATsx */ -extern int machine_at_kmxc02_init(const machine_t *); +extern int machine_at_kmxc02_init(const machine_t *); /* WD76C10 */ -extern int machine_at_wd76c10_init(const machine_t *); +extern int machine_at_wd76c10_init(const machine_t *); /* m_at_m6117.c */ /* ALi M6117D */ -extern int machine_at_pja511m_init(const machine_t *); -extern int machine_at_prox1332_init(const machine_t *); +extern int machine_at_pja511m_init(const machine_t *); +extern int machine_at_prox1332_init(const machine_t *); + +/* m_at_386dx.c */ +/* ISA */ +extern int machine_at_deskpro386_init(const machine_t *); +extern int machine_at_deskpro386_05_1988_init(const machine_t *); +extern int machine_at_portableiii386_init(const machine_t *); +extern int machine_at_micronics386_init(const machine_t *); +extern int machine_at_micronics386px_init(const machine_t *); + +/* ACC 2168 */ +extern int machine_at_acc386_init(const machine_t *); + +/* C&T 386/AT */ +extern int machine_at_ecs386_init(const machine_t *); +extern int machine_at_spc6000a_init(const machine_t *); +extern int machine_at_tandy4000_init(const machine_t *); + +/* ALi M1429 */ +extern int machine_at_ecs386v_init(const machine_t *); + +/* OPTi 391 */ +extern int machine_at_dataexpert386wb_init(const machine_t *); + +/* OPTi 495SLC */ +extern int machine_at_opti495_init(const machine_t *); + +/* SiS 310 */ +extern int machine_at_asus3863364k_init(const machine_t *); +extern int machine_at_asus386_init(const machine_t *); + +/* m_at_486slc.c */ +/* OPTi 283 */ +extern int machine_at_rycleopardlx_init(const machine_t *); /* m_at_386dx_486.c */ -/* Note to jriwanek: When merging this into my branch, please make - sure this appear here (and in the .c file) in the order and position - in which they appear in the machine table. */ -extern int machine_at_dataexpert386wb_init(const machine_t *); -extern int machine_at_isa486c_init(const machine_t *); -extern int machine_at_genoa486_init(const machine_t *); -extern int machine_at_ga486l_init(const machine_t *); -extern int machine_at_cobalt_init(const machine_t *); -extern int machine_at_cougar_init(const machine_t *); +/* ALi M1429G */ +extern int machine_at_exp4349_init(const machine_t *); -extern int machine_at_acc386_init(const machine_t *); -extern int machine_at_asus3863364k_init(const machine_t *); -extern int machine_at_asus386_init(const machine_t *); -extern int machine_at_ecs386_init(const machine_t *); -extern int machine_at_spc6000a_init(const machine_t *); -extern int machine_at_micronics386_init(const machine_t *); -extern int machine_at_micronics386px_init(const machine_t *); -extern int machine_at_ecs386v_init(const machine_t *); -extern int machine_at_tandy4000_init(const machine_t *); +/* OPTi 495SX */ +extern int machine_at_c747_init(const machine_t *); +extern int machine_at_opti495_ami_init(const machine_t *); +extern int machine_at_opti495_mr_init(const machine_t *); -extern int machine_at_rycleopardlx_init(const machine_t *); +/* m_at_common.c */ +extern void machine_at_common_init_ex(const machine_t *, int type); +extern void machine_at_common_init(const machine_t *); +extern void machine_at_init(const machine_t *); +extern void machine_at_ps2_init(const machine_t *); +extern void machine_at_common_ide_init(const machine_t *); +extern void machine_at_ibm_common_ide_init(const machine_t *); +extern void machine_at_ide_init(const machine_t *); +extern void machine_at_ps2_ide_init(const machine_t *); -extern int machine_at_486vchd_init(const machine_t *); +/* m_at_socket1.c */ +/* CS4031 */ +extern int machine_at_cs4031_init(const machine_t *); -extern int machine_at_cs4031_init(const machine_t *); +/* OPTi 381 */ +extern int machine_at_ga486l_init(const machine_t *); -extern int machine_at_pb410a_init(const machine_t *); +/* OPTi 493 */ +extern int machine_at_svc486wb_init(const machine_t *); -extern int machine_at_decpclpv_init(const machine_t *); -extern int machine_at_dell466np_init(const machine_t *); +/* OPTi 498 */ +extern int machine_at_mvi486_init(const machine_t *); -extern int machine_at_acerv10_init(const machine_t *); +/* SiS 401 */ +extern int machine_at_isa486_init(const machine_t *); +extern int machine_at_sis401_init(const machine_t *); -extern int machine_at_acera1g_init(const machine_t *); -extern int machine_at_ali1429_init(const machine_t *); -extern int machine_at_winbios1429_init(const machine_t *); +/* SiS 460 */ +extern int machine_at_av4_init(const machine_t *); -extern int machine_at_opti495_init(const machine_t *); -extern int machine_at_opti495_ami_init(const machine_t *); -extern int machine_at_opti495_mr_init(const machine_t *); -extern int machine_at_c747_init(const machine_t *); -extern int machine_at_exp4349_init(const machine_t *); +/* SiS 471 */ +extern int machine_at_advantage40xxd_init(const machine_t *); -extern int machine_at_vect486vl_init(const machine_t *); -extern int machine_at_d824_init(const machine_t *); -extern int machine_at_tuliptc38_init(const machine_t *); -extern int machine_at_martin_init(const machine_t *); +/* Symphony SL42C460 */ +extern int machine_at_dtk461_init(const machine_t *); -extern int machine_at_403tg_init(const machine_t *); -extern int machine_at_403tg_d_init(const machine_t *); -extern int machine_at_403tg_d_mr_init(const machine_t *); -extern int machine_at_pb450_init(const machine_t *); -extern int machine_at_pb450_init(const machine_t *); -extern int machine_at_aptiva510_init(const machine_t *); -extern int machine_at_pc330_6573_init(const machine_t *); -extern int machine_at_mvi486_init(const machine_t *); +/* VIA VT82C495 */ +extern int machine_at_486vchd_init(const machine_t *); -extern int machine_at_dtk461_init(const machine_t *); -extern int machine_at_sis401_init(const machine_t *); -extern int machine_at_isa486_init(const machine_t *); -extern int machine_at_av4_init(const machine_t *); -extern int machine_at_advantage40xxd_init(const machine_t *); -extern int machine_at_valuepoint433_init(const machine_t *); +/* VLSI 82C480 */ +extern int machine_at_vect486vl_init(const machine_t *); -extern int machine_at_vli486sv2g_init(const machine_t *); -extern int machine_at_ami471_init(const machine_t *); -extern int machine_at_dtk486_init(const machine_t *); -extern int machine_at_px471_init(const machine_t *); -extern int machine_at_win471_init(const machine_t *); -extern int machine_at_pci400ca_init(const machine_t *); -extern int machine_at_vi15g_init(const machine_t *); -extern int machine_at_greenb_init(const machine_t *); -extern int machine_at_4gpv5_init(const machine_t *); +/* VLSI 82C481 */ +extern int machine_at_d824_init(const machine_t *); -extern int machine_at_r418_init(const machine_t *); -extern int machine_at_ls486e_init(const machine_t *); -extern int machine_at_4dps_init(const machine_t *); -extern int machine_at_ms4144_init(const machine_t *); -extern int machine_at_acerp3_init(const machine_t *); -extern int machine_at_4saw2_init(const machine_t *); -extern int machine_at_m4li_init(const machine_t *); -extern int machine_at_alfredo_init(const machine_t *); -extern int machine_at_amis76_init(const machine_t *); -extern int machine_at_ninja_init(const machine_t *); -extern int machine_at_bat4ip3e_init(const machine_t *); -extern int machine_at_486pi_init(const machine_t *); -extern int machine_at_sb486p_init(const machine_t *); -extern int machine_at_486sp3_init(const machine_t *); -extern int machine_at_486sp3c_init(const machine_t *); -extern int machine_at_486sp3g_init(const machine_t *); -extern int machine_at_sb486pv_init(const machine_t *); -extern int machine_at_486ap4_init(const machine_t *); -extern int machine_at_g486vpa_init(const machine_t *); -extern int machine_at_486vipio2_init(const machine_t *); -extern int machine_at_abpb4_init(const machine_t *); -extern int machine_at_win486pci_init(const machine_t *); -extern int machine_at_ms4145_init(const machine_t *); -extern int machine_at_sbc490_init(const machine_t *); -extern int machine_at_tf486_init(const machine_t *); -extern int machine_at_arb1476_init(const machine_t *); +/* VLSI 82C486 */ +extern int machine_at_tuliptc38_init(const machine_t *); -extern int machine_at_pci400cb_init(const machine_t *); -extern int machine_at_g486ip_init(const machine_t *); +/* ZyMOS Poach */ +extern int machine_at_isa486c_init(const machine_t *); +extern int machine_at_genoa486_init(const machine_t *); -extern int machine_at_itoxstar_init(const machine_t *); -extern int machine_at_arb1423c_init(const machine_t *); -extern int machine_at_arb1479_init(const machine_t *); -extern int machine_at_iach488_init(const machine_t *); -extern int machine_at_pcm9340_init(const machine_t *); -extern int machine_at_pcm5330_init(const machine_t *); +/* m_at_socket2.c */ +/* ACC 2168 */ +extern int machine_at_pb410a_init(const machine_t *); -extern int machine_at_84xxuuda_init(const machine_t *); -extern int machine_at_ecs486_init(const machine_t *); -extern int machine_at_hot433a_init(const machine_t *); -extern int machine_at_pl4600c_init(const machine_t *); -extern int machine_at_atc1415_init(const machine_t *); -extern int machine_at_actionpc2600_init(const machine_t *); -extern int machine_at_actiontower8400_init(const machine_t *); -extern int machine_at_m919_init(const machine_t *); -extern int machine_at_spc7700plw_init(const machine_t *); -extern int machine_at_ms4134_init(const machine_t *); -extern int machine_at_tg486gp_init(const machine_t *); -extern int machine_at_tg486g_init(const machine_t *); -extern int machine_at_dvent4xx_init(const machine_t *); -extern int machine_at_ecsal486_init(const machine_t *); -extern int machine_at_ap4100aa_init(const machine_t *); -extern int machine_at_atc1762_init(const machine_t *); +/* ALi M1429G */ +extern int machine_at_acera1g_init(const machine_t *); +extern int machine_at_winbios1429_init(const machine_t *); +extern int machine_at_ali1429_init(const machine_t *); -/* m_at_commodore.c */ -extern int machine_at_cmdpc_init(const machine_t *); +/* i420TX */ +extern int machine_at_pci400ca_init(const machine_t *); -/* m_at_compaq.c */ -extern int machine_at_portableii_init(const machine_t *); -extern int machine_at_portableiii_init(const machine_t *); -extern int machine_at_portableiii386_init(const machine_t *); -extern int machine_at_deskpro386_init(const machine_t *); -extern int machine_at_deskpro386_05_1988_init(const machine_t *); +/* IMS 8848 */ +extern int machine_at_g486ip_init(const machine_t *); + +/* OPTi 499 */ +extern int machine_at_cobalt_init(const machine_t *); +extern int machine_at_cougar_init(const machine_t *); + +/* SiS 461 */ +extern int machine_at_decpclpv_init(const machine_t *); +extern int machine_at_dell466np_init(const machine_t *); +extern int machine_at_valuepoint433_init(const machine_t *); + +/* VLSI 82C480 */ +extern int machine_at_martin_init(const machine_t *); + +/* m_at_socket3.c */ +/* ALi M1429G */ +extern int machine_at_atc1762_init(const machine_t *); +extern int machine_at_ecsal486_init(const machine_t *); +extern int machine_at_ap4100aa_init(const machine_t *); + +/* Contaq 82C596A */ +extern int machine_at_4gpv5_init(const machine_t *); + +/* Contaq 82C597 */ +extern int machine_at_greenb_init(const machine_t *); + +/* OPTi 895 */ +extern int machine_at_403tg_init(const machine_t *); +extern int machine_at_403tg_d_init(const machine_t *); +extern int machine_at_403tg_d_mr_init(const machine_t *); + +/* SiS 461 */ +extern int machine_at_acerv10_init(const machine_t *); + +/* SiS 471 */ +extern int machine_at_win471_init(const machine_t *); +extern int machine_at_vi15g_init(const machine_t *); +extern int machine_at_vli486sv2g_init(const machine_t *); +extern int machine_at_dvent4xx_init(const machine_t *); +extern int machine_at_dtk486_init(const machine_t *); +extern int machine_at_ami471_init(const machine_t *); +extern int machine_at_px471_init(const machine_t *); +extern int machine_at_tg486g_init(const machine_t *); + +/* m_at_socket3_pci.c */ +/* ALi M1429G */ +extern int machine_at_ms4134_init(const machine_t *); +extern int machine_at_tg486gp_init(const machine_t *); + +/* ALi M1489 */ +extern int machine_at_sbc490_init(const machine_t *); +extern int machine_at_abpb4_init(const machine_t *); +extern int machine_at_arb1476_init(const machine_t *); +extern int machine_at_win486pci_init(const machine_t *); +extern int machine_at_tf486_init(const machine_t *); +extern int machine_at_ms4145_init(const machine_t *); + +/* OPTi 802G */ +extern int machine_at_aptiva510_init(const machine_t *); +extern int machine_at_pc330_6573_init(const machine_t *); + +/* OPTi 895 */ +#ifdef EMU_DEVICE_H +extern const device_t pb450_device; +#endif +extern int machine_at_pb450_init(const machine_t *); + +/* i420EX */ +extern int machine_at_486pi_init(const machine_t *); +extern int machine_at_bat4ip3e_init(const machine_t *); +extern int machine_at_486ap4_init(const machine_t *); +extern int machine_at_ninja_init(const machine_t *); +extern int machine_at_sb486p_init(const machine_t *); + +/* i420TX */ +extern int machine_at_amis76_init(const machine_t *); +extern int machine_at_486sp3_init(const machine_t *); +extern int machine_at_alfredo_init(const machine_t *); + +/* i420ZX */ +extern int machine_at_486sp3g_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t sb486pv_device; +#endif +extern int machine_at_sb486pv_init(const machine_t *); + +/* IMS 8848 */ +extern int machine_at_pci400cb_init(const machine_t *); + +/* SiS 496 */ +extern int machine_at_acerp3_init(const machine_t *); +extern int machine_at_486sp3c_init(const machine_t *); +extern int machine_at_ls486e_init(const machine_t *); +extern int machine_at_m4li_init(const machine_t *); +extern int machine_at_ms4144_init(const machine_t *); +extern int machine_at_r418_init(const machine_t *); +extern int machine_at_4saw2_init(const machine_t *); +extern int machine_at_4dps_init(const machine_t *); + +/* UMC 8881 */ +extern int machine_at_atc1415_init(const machine_t *); +extern int machine_at_84xxuuda_init(const machine_t *); +extern int machine_at_pl4600c_init(const machine_t *); +extern int machine_at_ecs486_init(const machine_t *); +extern int machine_at_actionpc2600_init(const machine_t *); +extern int machine_at_actiontower8400_init(const machine_t *); +extern int machine_at_m919_init(const machine_t *); +extern int machine_at_spc7700plw_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t hot433a_device; +#endif +extern int machine_at_hot433a_init(const machine_t *); + +/* VIA VT82C496G */ +extern int machine_at_g486vpa_init(const machine_t *); +extern int machine_at_486vipio2_init(const machine_t *); + +/* m_at_486_misc.c */ +/* STPC Client */ +extern int machine_at_itoxstar_init(const machine_t *); + +/* STPC Consumer-II */ +extern int machine_at_arb1423c_init(const machine_t *); +extern int machine_at_arb1479_init(const machine_t *); +extern int machine_at_iach488_init(const machine_t *); + +/* STPC Elite */ +extern int machine_at_pcm9340_init(const machine_t *); + +/* STPC Atlas */ +extern int machine_at_pcm5330_init(const machine_t *); /* m_at_socket4.c */ -extern void machine_at_premiere_common_init(const machine_t *, int); -extern void machine_at_award_common_init(const machine_t *); +/* i430LX */ +#ifdef EMU_DEVICE_H +extern const device_t v12p_device; +#endif +extern int machine_at_v12p_init(const machine_t *); +extern int machine_at_ambradp60_init(const machine_t *); +extern int machine_at_excaliburpci_init(const machine_t *); +extern int machine_at_p5mp3_init(const machine_t *); +extern int machine_at_dellxp60_init(const machine_t *); +extern int machine_at_opti560l_init(const machine_t *); +extern void machine_at_award_common_init(const machine_t *); +extern int machine_at_586is_init(const machine_t *); +extern int machine_at_valuepointp60_init(const machine_t *); +extern void machine_at_premiere_common_init(const machine_t *, int); +extern int machine_at_revenge_init(const machine_t *); +extern int machine_at_m5pi_init(const machine_t *); +extern int machine_at_pb520r_init(const machine_t *); -extern void machine_at_sp4_common_init(const machine_t *model); +/* OPTi 597 */ +extern int machine_at_excalibur_init(const machine_t *); +extern int machine_at_globalyst330_p5_init(const machine_t *); +extern int machine_at_p5vl_init(const machine_t *); -extern int machine_at_v12p_init(const machine_t *); -extern int machine_at_excaliburpci_init(const machine_t *); -extern int machine_at_p5mp3_init(const machine_t *); -extern int machine_at_dellxp60_init(const machine_t *); -extern int machine_at_opti560l_init(const machine_t *); -extern int machine_at_ambradp60_init(const machine_t *); -extern int machine_at_valuepointp60_init(const machine_t *); -extern int machine_at_revenge_init(const machine_t *); -extern int machine_at_586is_init(const machine_t *); -extern int machine_at_pb520r_init(const machine_t *); -extern int machine_at_m5pi_init(const machine_t *); +/* SiS 501 */ +extern int machine_at_excaliburpci2_init(const machine_t *); +extern void machine_at_sp4_common_init(const machine_t *model); +extern int machine_at_p5sp4_init(const machine_t *); +extern int machine_at_ecs50x_init(const machine_t *); -extern int machine_at_excalibur_init(const machine_t *); - -extern int machine_at_globalyst330_p5_init(const machine_t *); -extern int machine_at_p5vl_init(const machine_t *); - -extern int machine_at_excaliburpci2_init(const machine_t *); -extern int machine_at_p5sp4_init(const machine_t *); +/* m_at_socket4_5.c */ +/* OPTi 597 */ +extern int machine_at_pci56001_init(const machine_t *); /* m_at_socket5.c */ -extern int machine_at_plato_init(const machine_t *); -extern int machine_at_dellplato_init(const machine_t *); -extern int machine_at_d842_init(const machine_t *); -extern int machine_at_ambradp90_init(const machine_t *); -extern int machine_at_p54np4_init(const machine_t *); -extern int machine_at_586ip_init(const machine_t *); -extern int machine_at_tek932_init(const machine_t *); +/* i430NX */ +extern int machine_at_ambradp90_init(const machine_t *); +extern int machine_at_p54np4_init(const machine_t *); +extern int machine_at_dellplato_init(const machine_t *); +extern int machine_at_586ip_init(const machine_t *); +extern int machine_at_plato_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t d842_device; +#endif +extern int machine_at_d842_init(const machine_t *); +extern int machine_at_tek932_init(const machine_t *); -extern int machine_at_acerv30_init(const machine_t *); -extern int machine_at_apollo_init(const machine_t *); -extern int machine_at_optiplexgxl_init(const machine_t *); -extern int machine_at_zappa_init(const machine_t *); -extern int machine_at_powermatev_init(const machine_t *); -extern int machine_at_hawk_init(const machine_t *); -extern int machine_at_pt2000_init(const machine_t *); +/* i430FX */ +extern int machine_at_acerv30_init(const machine_t *); +extern int machine_at_apollo_init(const machine_t *); +extern int machine_at_optiplexgxl_init(const machine_t *); +extern int machine_at_pt2000_init(const machine_t *); +extern int machine_at_zappa_init(const machine_t *); +extern int machine_at_powermatev_init(const machine_t *); +extern int machine_at_hawk_init(const machine_t *); -extern int machine_at_pat54pv_init(const machine_t *); +/* OPTi 597 */ +extern int machine_at_ncselp90_init(const machine_t *); +extern int machine_at_hot543_init(const machine_t *); +extern int machine_at_pat54pv_init(const machine_t *); -extern int machine_at_hot543_init(const machine_t *); -extern int machine_at_ncselp90_init(const machine_t *); +/* SiS 501 */ +extern int machine_at_p54sp4_init(const machine_t *); +extern int machine_at_sq588_init(const machine_t *); +extern int machine_at_p54sps_init(const machine_t *); +extern int machine_at_ms5109_init(const machine_t *); -extern int machine_at_p54sp4_init(const machine_t *); -extern int machine_at_sq588_init(const machine_t *); -extern int machine_at_p54sps_init(const machine_t *); +/* SiS 5501 */ +extern int machine_at_torino_init(const machine_t *); -extern int machine_at_ms5109_init(const machine_t *); -extern int machine_at_torino_init(const machine_t *); - -extern int machine_at_hot539_init(const machine_t *); +/* UMC 889x */ +extern int machine_at_hot539_init(const machine_t *); /* m_at_socket7_3v.c */ -extern int machine_at_p54tp4xe_init(const machine_t *); -extern int machine_at_p54tp4xe_mr_init(const machine_t *); -extern int machine_at_exp8551_init(const machine_t *); -extern int machine_at_gw2katx_init(const machine_t *); -extern int machine_at_thor_init(const machine_t *); -extern int machine_at_mrthor_init(const machine_t *); -extern uint32_t machine_at_endeavor_gpio_handler(uint8_t write, uint32_t val); -extern int machine_at_endeavor_init(const machine_t *); -extern int machine_at_ms5119_init(const machine_t *); -extern int machine_at_pb640_init(const machine_t *); -extern int machine_at_mb500n_init(const machine_t *); -extern int machine_at_fmb_init(const machine_t *); +/* i430FX */ +extern int machine_at_p54tp4xe_init(const machine_t *); +extern int machine_at_p54tp4xe_mr_init(const machine_t *); +extern int machine_at_exp8551_init(const machine_t *); +extern int machine_at_gw2katx_init(const machine_t *); +extern int machine_at_vectra54_init(const machine_t *); +extern int machine_at_thor_init(const machine_t *); +extern int machine_at_mrthor_init(const machine_t *); +extern uint32_t machine_at_endeavor_gpio_handler(uint8_t write, uint32_t val); +extern int machine_at_endeavor_init(const machine_t *); +extern int machine_at_ms5119_init(const machine_t *); +extern int machine_at_pb640_init(const machine_t *); +extern int machine_at_mb500n_init(const machine_t *); +extern int machine_at_fmb_init(const machine_t *); -extern int machine_at_acerm3a_init(const machine_t *); -extern int machine_at_ap53_init(const machine_t *); -extern int machine_at_8500tuc_init(const machine_t *); -extern int machine_at_d943_init(const machine_t *); -extern int machine_at_p55t2s_init(const machine_t *); +/* i430HX */ +extern int machine_at_acerv35n_init(const machine_t *); +extern int machine_at_ap53_init(const machine_t *); +extern int machine_at_8500tuc_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t d943_device; +#endif +extern int machine_at_d943_init(const machine_t *); -extern int machine_at_p5vxb_init(const machine_t *); -extern int machine_at_gw2kma_init(const machine_t *); +/* i430VX */ +extern int machine_at_gw2kma_init(const machine_t *); -extern int machine_at_ap5s_init(const machine_t *); -extern int machine_at_pc140_6260_init(const machine_t *); -extern int machine_at_ms5124_init(const machine_t *); -extern int machine_at_amis727_init(const machine_t *); -extern int machine_at_vectra54_init(const machine_t *); +/* SiS 5501 */ +#ifdef EMU_DEVICE_H +extern const device_t c5sbm2_device; +#endif +extern int machine_at_5sbm2_init(const machine_t *); -extern int machine_at_5sbm2_init(const machine_t *); +/* SiS 5511 */ +extern int machine_at_amis727_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ap5s_device; +#endif +extern int machine_at_ap5s_init(const machine_t *); +extern int machine_at_pc140_6260_init(const machine_t *); +extern int machine_at_ms5124_init(const machine_t *); /* m_at_socket7.c */ -extern void machine_at_optiplex_21152_init(void); +/* i430HX */ +extern int machine_at_acerm3a_init(const machine_t *); +extern int machine_at_p55t2p4_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge); +#endif +extern int machine_at_p65up5_cp55t2d_init(const machine_t *); +extern int machine_at_cu430hx_init(const machine_t *); +extern int machine_at_tc430hx_init(const machine_t *); +extern int machine_at_m7shi_init(const machine_t *); +extern int machine_at_epc2102_init(const machine_t *); +extern int machine_at_pcv90_init(const machine_t *); +extern int machine_at_p55t2s_init(const machine_t *); +extern int machine_at_equium5200_init(const machine_t *); +extern int machine_at_infinia7200_init(const machine_t *); -extern int machine_at_acerv35n_init(const machine_t *); -extern int machine_at_p55t2p4_init(const machine_t *); -extern int machine_at_m7shi_init(const machine_t *); -extern int machine_at_tc430hx_init(const machine_t *); -extern int machine_at_infinia7200_init(const machine_t *); -extern int machine_at_cu430hx_init(const machine_t *); -extern int machine_at_equium5200_init(const machine_t *); -extern int machine_at_pcv90_init(const machine_t *); -extern int machine_at_p65up5_cp55t2d_init(const machine_t *); -extern int machine_at_epc2102_init(const machine_t *); +/* i430VX */ +extern int machine_at_ap5vm_init(const machine_t *); +extern int machine_at_p55tvp4_init(const machine_t *); +extern int machine_at_5ivg_init(const machine_t *); +extern int machine_at_8500tvxa_init(const machine_t *); +extern int machine_at_presario2240_init(const machine_t *); +extern int machine_at_presario4500_init(const machine_t *); +extern int machine_at_dellhannibalp_init(const machine_t *); +extern int machine_at_p5vxb_init(const machine_t *); +extern int machine_at_p55va_init(const machine_t *); +extern int machine_at_gw2kte_init(const machine_t *); +extern int machine_at_brio80xx_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t lgibmx52_device; +#endif +extern int machine_at_lgibmx52_init(const machine_t *); +extern int machine_at_pb680_init(const machine_t *); +extern int machine_at_pb810_init(const machine_t *); +extern int machine_at_mb520n_init(const machine_t *); +extern int machine_at_i430vx_init(const machine_t *); -extern int machine_at_ap5vm_init(const machine_t *); -extern int machine_at_p55tvp4_init(const machine_t *); -extern int machine_at_5ivg_init(const machine_t *); -extern int machine_at_8500tvxa_init(const machine_t *); -extern int machine_at_presario2240_init(const machine_t *); -extern int machine_at_presario4500_init(const machine_t *); -extern int machine_at_dellhannibalp_init(const machine_t *); -extern int machine_at_p55va_init(const machine_t *); -extern int machine_at_brio80xx_init(const machine_t *); -extern int machine_at_pb680_init(const machine_t *); -extern int machine_at_pb810_init(const machine_t *); -extern int machine_at_mb520n_init(const machine_t *); -extern int machine_at_i430vx_init(const machine_t *); -extern int machine_at_gw2kte_init(const machine_t *); +/* i430TX */ +extern int machine_at_nupro592_init(const machine_t *); +extern int machine_at_tx97_init(const machine_t *); +extern void machine_at_optiplex_21152_init(void); +extern int machine_at_optiplexgn_init(const machine_t *); +extern int machine_at_tomahawk_init(const machine_t *); +extern int machine_at_ym430tx_init(const machine_t *); +extern int machine_at_thunderbolt_init(const machine_t *); +extern int machine_at_ma23c_init(const machine_t *); +extern int machine_at_an430tx_init(const machine_t *); +extern int machine_at_mb540n_init(const machine_t *); +extern int machine_at_56a5_init(const machine_t *); +extern int machine_at_p5mms98_init(const machine_t *); +extern int machine_at_richmond_init(const machine_t *); -extern int machine_at_ma23c_init(const machine_t *); -extern int machine_at_nupro592_init(const machine_t *); -extern int machine_at_tx97_init(const machine_t *); -extern int machine_at_optiplexgn_init(const machine_t *); -extern int machine_at_ym430tx_init(const machine_t *); -extern int machine_at_thunderbolt_init(const machine_t *); -extern int machine_at_an430tx_init(const machine_t *); -extern int machine_at_mb540n_init(const machine_t *); -extern int machine_at_56a5_init(const machine_t *); -extern int machine_at_p5mms98_init(const machine_t *); -extern int machine_at_richmond_init(const machine_t *); -extern int machine_at_tomahawk_init(const machine_t *); +/* VIA VPX */ +extern int machine_at_ficva502_init(const machine_t *); -extern int machine_at_ficva502_init(const machine_t *); +/* VIA VP3 */ +extern int machine_at_ficpa2012_init(const machine_t *); +extern int machine_at_via809ds_init(const machine_t *); -extern int machine_at_ficpa2012_init(const machine_t *); -extern int machine_at_via809ds_init(const machine_t *); +/* SiS 5571 */ +extern int machine_at_cb52xsi_init(const machine_t *); +extern int machine_at_ms5146_init(const machine_t *); +extern int machine_at_r534f_init(const machine_t *); -extern int machine_at_r534f_init(const machine_t *); -extern int machine_at_ms5146_init(const machine_t *); -extern int machine_at_cb52xsi_init(const machine_t *); +/* SiS 5581 */ +extern int machine_at_sp97xv_init(const machine_t *); +extern int machine_at_sq578_init(const machine_t *); -extern int machine_at_m560_init(const machine_t *); -extern int machine_at_m5ata_init(const machine_t *); -extern int machine_at_ms5164_init(const machine_t *); +/* SiS 5591 */ +extern int machine_at_ms5172_init(const machine_t *); -extern int machine_at_sp97xv_init(const machine_t *); -extern int machine_at_sq578_init(const machine_t *); - -extern int machine_at_ms5172_init(const machine_t *); +/* ALi ALADDiN IV+ */ +extern int machine_at_m5ata_init(const machine_t *); +extern int machine_at_ms5164_init(const machine_t *); +extern int machine_at_m560_init(const machine_t *); /* m_at_sockets7.c */ -extern int machine_at_p5a_init(const machine_t *); -extern int machine_at_m579_init(const machine_t *); -extern int machine_at_gwlucas_init(const machine_t *); -extern int machine_at_5aa_init(const machine_t *); -extern int machine_at_5ax_init(const machine_t *); +/* ALi ALADDiN V */ +extern int machine_at_p5a_init(const machine_t *); +extern int machine_at_m579_init(const machine_t *); +extern int machine_at_gwlucas_init(const machine_t *); +extern int machine_at_5aa_init(const machine_t *); +extern int machine_at_5ax_init(const machine_t *); -extern int machine_at_ax59pro_init(const machine_t *); -extern int machine_at_mvp3_init(const machine_t *); -extern int machine_at_ficva503a_init(const machine_t *); -extern int machine_at_5emapro_init(const machine_t *); -extern int machine_at_delhi3_init(const machine_t *); +/* VIA MVP3 */ +extern int machine_at_ax59pro_init(const machine_t *); +extern int machine_at_delhi3_init(const machine_t *); +extern int machine_at_mvp3_init(const machine_t *); +extern int machine_at_ficva503a_init(const machine_t *); +extern int machine_at_5emapro_init(const machine_t *); -extern int machine_at_5sg100_init(const machine_t *); +/* SiS 5591 */ +extern int machine_at_5sg100_init(const machine_t *); /* m_at_socket8.c */ -extern int machine_at_ap61_init(const machine_t *); -extern int machine_at_p6rp4_init(const machine_t *); - -extern int machine_at_686nx_init(const machine_t *); -extern int machine_at_acerv60n_init(const machine_t *); -extern int machine_at_lgibmx61_init(const machine_t *); -extern int machine_at_vs440fx_init(const machine_t *); -extern int machine_at_dellvenus_init(const machine_t *); -extern int machine_at_gw2kvenus_init(const machine_t *); -extern int machine_at_ap440fx_init(const machine_t *); -extern int machine_at_mb600n_init(const machine_t *); -extern int machine_at_8600ttc_init(const machine_t *); -extern int machine_at_m6mi_init(const machine_t *); +/* i450KX */ +extern int machine_at_ap61_init(const machine_t *); #ifdef EMU_DEVICE_H -extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge); +extern const device_t ficpo6000_device; #endif -extern int machine_at_p65up5_cp6nd_init(const machine_t *); +extern int machine_at_p6rp4_init(const machine_t *); +extern int machine_at_ficpo6000_init(const machine_t *); + +/* i440FX */ +extern int machine_at_acerv60n_init(const machine_t *); +extern int machine_at_p65up5_cp6nd_init(const machine_t *); +extern int machine_at_8600ttc_init(const machine_t *); +extern int machine_at_dellvenus_init(const machine_t *); +extern int machine_at_gw2kvenus_init(const machine_t *); +extern int machine_at_686nx_init(const machine_t *); +extern int machine_at_ap440fx_init(const machine_t *); +extern int machine_at_vs440fx_init(const machine_t *); +extern int machine_at_lgibmx61_init(const machine_t *); +extern int machine_at_m6mi_init(const machine_t *); +extern int machine_at_mb600n_init(const machine_t *); /* m_at_slot1.c */ -extern int machine_at_m729_init(const machine_t *); +/* ALi ALADDiN-PRO II */ +extern int machine_at_m729_init(const machine_t *); -extern int machine_at_acerv62x_init(const machine_t *); -extern int machine_at_p65up5_cpknd_init(const machine_t *); -extern int machine_at_kn97_init(const machine_t *); +/* i440FX */ +extern int machine_at_acerv62x_init(const machine_t *); +extern int machine_at_p65up5_cpknd_init(const machine_t *); +extern int machine_at_kn97_init(const machine_t *); -extern int machine_at_lx6_init(const machine_t *); -extern int machine_at_optiplexgxa_init(const machine_t *); -extern int machine_at_spitfire_init(const machine_t *); -extern int machine_at_ma30d_init(const machine_t *); +/* i440LX */ +extern int machine_at_lx6_init(const machine_t *); +extern int machine_at_optiplexgxa_init(const machine_t *); +extern int machine_at_spitfire_init(const machine_t *); +extern int machine_at_ma30d_init(const machine_t *); -extern int machine_at_p6i440e2_init(const machine_t *); +/* i440EX */ +extern int machine_at_p6i440e2_init(const machine_t *); -extern int machine_at_p2bls_init(const machine_t *); -extern int machine_at_lgibmx7g_init(const machine_t *); -extern int machine_at_p3bf_init(const machine_t *); -extern int machine_at_bf6_init(const machine_t *); -extern int machine_at_bx6_init(const machine_t *); -extern int machine_at_ax6bc_init(const machine_t *); -extern int machine_at_atc6310bxii_init(const machine_t *); -extern int machine_at_686bx_init(const machine_t *); -extern int machine_at_s1846_init(const machine_t *); -extern int machine_at_p6sba_init(const machine_t *); -extern int machine_at_ficka6130_init(const machine_t *); -extern int machine_at_p3v133_init(const machine_t *); -extern int machine_at_p3v4x_init(const machine_t *); -extern int machine_at_gt694va_init(const machine_t *); +/* i440BX */ +extern int machine_at_bf6_init(const machine_t *); +extern int machine_at_bx6_init(const machine_t *); +extern int machine_at_ax6bc_init(const machine_t *); +extern int machine_at_p2bls_init(const machine_t *); +extern int machine_at_p3bf_init(const machine_t *); +extern int machine_at_686bx_init(const machine_t *); +extern int machine_at_lgibmx7g_init(const machine_t *); +extern int machine_at_p6sba_init(const machine_t *); +extern int machine_at_s1846_init(const machine_t *); -extern int machine_at_vei8_init(const machine_t *); +/* i440ZX */ +extern int machine_at_vei8_init(const machine_t *); +extern int machine_at_ms6168_init(const machine_t *); +extern int machine_at_borapro_init(const machine_t *); -extern int machine_at_borapro_init(const machine_t *); -extern int machine_at_ms6168_init(const machine_t *); +/* SMSC VictoryBX-66 */ +extern int machine_at_atc6310bxii_init(const machine_t *); -extern int machine_at_p6f99_init(const machine_t *); -extern int machine_at_m747_init(const machine_t *); +/* VIA Apollo Pro */ +extern int machine_at_ficka6130_init(const machine_t *); + +/* VIA Apollo Pro 133 */ +extern int machine_at_p3v133_init(const machine_t *); + +/* VIA Apollo Pro 133A */ +extern int machine_at_p3v4x_init(const machine_t *); +extern int machine_at_gt694va_init(const machine_t *); + +/* SiS 5600 */ +extern int machine_at_p6f99_init(const machine_t *); +extern int machine_at_m747_init(const machine_t *); + +/* m_at_slot1_2.c */ +/* i440GX */ +extern int machine_at_fw6400gx_init(const machine_t *); + +/* m_at_slot1_socket370.c */ +/* i440BX */ +extern int machine_at_prosignias31x_bx_init(const machine_t *); +extern int machine_at_s1857_init(const machine_t *); + +/* VIA Apollo Pro 133 */ +extern int machine_at_p6bat_init(const machine_t *); /* m_at_slot2.c */ -extern int machine_at_6gxu_init(const machine_t *); -extern int machine_at_s2dge_init(const machine_t *); -extern int machine_at_fw6400gx_init(const machine_t *); +/* i440GX */ +extern int machine_at_6gxu_init(const machine_t *); +extern int machine_at_s2dge_init(const machine_t *); /* m_at_socket370.c */ -extern int machine_at_s370slm_init(const machine_t *); +/* i440LX */ +extern int machine_at_s370slm_init(const machine_t *); -extern int machine_at_cubx_init(const machine_t *); -extern int machine_at_atc7020bxii_init(const machine_t *); -extern int machine_at_m773_init(const machine_t *); -extern int machine_at_ambx133_init(const machine_t *); -extern int machine_at_awo671r_init(const machine_t *); -extern int machine_at_63a1_init(const machine_t *); -extern int machine_at_s370sba_init(const machine_t *); -extern int machine_at_apas3_init(const machine_t *); -extern int machine_at_cuv4xls_init(const machine_t *); -extern int machine_at_6via90ap_init(const machine_t *); -extern int machine_at_s1857_init(const machine_t *); -extern int machine_at_p6bap_init(const machine_t *); -extern int machine_at_p6bat_init(const machine_t *); -extern int machine_at_prosignias31x_bx_init(const machine_t *); -extern int machine_at_7sbb_init(const machine_t *); +/* i440BX */ +extern int machine_at_awo671r_init(const machine_t *); +extern int machine_at_ambx133_init(const machine_t *); +extern int machine_at_cubx_init(const machine_t *); + +/* i440ZX */ +extern int machine_at_63a1_init(const machine_t *); + +/* SMSC VictoryBX-66 */ +extern int machine_at_atc7020bxii_init(const machine_t *); +extern int machine_at_m773_init(const machine_t *); + +/* VIA Apollo Pro */ +extern int machine_at_apas3_init(const machine_t *); + +/* VIA Apollo Pro 133 */ +extern int machine_at_p6bap_init(const machine_t *); + +/* VIA Apollo Pro 133A */ +extern int machine_at_6via90ap_init(const machine_t *); +extern int machine_at_cuv4xls_init(const machine_t *); + +/* SiS 600 */ +extern int machine_at_7sbb_init(const machine_t *); /* m_at_misc.c */ -extern int machine_at_vpc2007_init(const machine_t *); +extern int machine_at_vpc2007_init(const machine_t *); /* m_at_t3100e.c */ -extern int machine_at_t3100e_init(const machine_t *); - -/* m_at_grid.c */ -extern int machine_at_grid1520_init(const machine_t *); +extern int machine_at_t3100e_init(const machine_t *); /* m_elt.c */ extern int machine_elt_init(const machine_t *); /* m_europc.c */ -extern int machine_europc_init(const machine_t *); #ifdef EMU_DEVICE_H -extern const device_t europc_device; +extern const device_t europc_device; #endif +extern int machine_europc_init(const machine_t *); /* m_xt_olivetti.c */ -extern int machine_xt_m24_init(const machine_t *); -extern int machine_xt_m240_init(const machine_t *); -extern int machine_xt_m19_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t m19_vid_device; +#endif +extern int machine_xt_m19_init(const machine_t *); +extern int machine_xt_m24_init(const machine_t *); +extern int machine_xt_m240_init(const machine_t *); /* m_pcjr.c */ -extern int machine_pcjr_init(const machine_t *); - -/* m_pc5086.c */ -extern int machine_pc5086_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t pcjr_device; +#endif +extern int machine_pcjr_init(const machine_t *); /* m_ps1.c */ -extern int machine_ps1_m2011_init(const machine_t *); -extern int machine_ps1_m2121_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ps1_2011_device; +#endif +extern int machine_ps1_m2011_init(const machine_t *); +extern int machine_ps1_m2121_init(const machine_t *); /* m_ps1_hdc.c */ #ifdef EMU_DEVICE_H -extern void ps1_hdc_inform(void *, uint8_t *); -extern const device_t ps1_hdc_device; +extern void ps1_hdc_inform(void *, uint8_t *); +extern const device_t ps1_hdc_device; #endif /* m_ps2_isa.c */ -extern int machine_ps2_m30_286_init(const machine_t *); +extern int machine_ps2_m30_286_init(const machine_t *); /* m_ps2_mca.c */ -extern int machine_ps2_model_50_init(const machine_t *); -extern int machine_ps2_model_60_init(const machine_t *); -extern int machine_ps2_model_55sx_init(const machine_t *); -extern int machine_ps2_model_65sx_init(const machine_t *); -extern int machine_ps2_model_70_type3_init(const machine_t *); -extern int machine_ps2_model_80_init(const machine_t *); -extern int machine_ps2_model_80_axx_init(const machine_t *); -extern int machine_ps2_model_70_type4_init(const machine_t *); -extern int machine_ps55_model_50t_init(const machine_t*); -extern int machine_ps55_model_50v_init(const machine_t*); +extern int machine_ps2_model_50_init(const machine_t *); +extern int machine_ps2_model_60_init(const machine_t *); +extern int machine_ps2_model_55sx_init(const machine_t *); +extern int machine_ps2_model_65sx_init(const machine_t *); +extern int machine_ps2_model_70_type3_init(const machine_t *); +extern int machine_ps2_model_80_init(const machine_t *); +extern int machine_ps2_model_80_axx_init(const machine_t *); +extern int machine_ps2_model_70_type4_init(const machine_t *); +extern int machine_ps55_model_50t_init(const machine_t*); +extern int machine_ps55_model_50v_init(const machine_t*); /* m_tandy.c */ extern int tandy1k_eeprom_read(void); -extern int machine_tandy1000sx_init(const machine_t *); -extern int machine_tandy1000hx_init(const machine_t *); -extern int machine_tandy1000sl2_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t tandy_1000sx_video_device; +#endif +extern int machine_tandy1000sx_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t tandy_1000hx_video_device; +#endif +extern int machine_tandy1000hx_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t tandy_1000sl_video_device; +#endif +extern int machine_tandy1000sl2_init(const machine_t *); /* m_v86p.c */ -extern int machine_v86p_init(const machine_t *); +extern int machine_v86p_init(const machine_t *); /* m_xt.c */ -extern int machine_pc_init(const machine_t *); -extern int machine_pc82_init(const machine_t *); - -extern int machine_xt_init(const machine_t *); -extern int machine_genxt_init(const machine_t *); - -extern int machine_xt86_init(const machine_t *); - -extern int machine_xt_americxt_init(const machine_t *); -extern int machine_xt_amixt_init(const machine_t *); -extern int machine_xt_ataripc3_init(const machine_t *); -extern int machine_xt_dtk_init(const machine_t *); -extern int machine_xt_jukopc_init(const machine_t *); -extern int machine_xt_openxt_init(const machine_t *); -extern int machine_xt_pcxt_init(const machine_t *); -extern int machine_xt_pxxt_init(const machine_t *); -extern int machine_xt_pc4i_init(const machine_t *); -extern int machine_xt_mpc1600_init(const machine_t *); -extern int machine_xt_pcspirit_init(const machine_t *); -extern int machine_xt_pc700_init(const machine_t *); -extern int machine_xt_pc500_init(const machine_t *); -extern int machine_xt_vendex_init(const machine_t *); -extern int machine_xt_znic_init(const machine_t *); -extern int machine_xt_glabios_init(const machine_t *); -extern int machine_xt_super16t_init(const machine_t *); -extern int machine_xt_super16te_init(const machine_t *); -extern int machine_xt_top88_init(const machine_t *); -extern int machine_xt_kaypropc_init(const machine_t *); -extern int machine_xt_sansx16_init(const machine_t *); -extern int machine_xt_bw230_init(const machine_t *); -extern int machine_xt_pb8810_init(const machine_t *); -extern int machine_xt_tuliptc8_init(const machine_t *); - -extern int machine_xt_v20xt_init(const machine_t *); - -extern int machine_xt_iskra3104_init(const machine_t *); -extern int machine_xt_pravetz16_imko4_init(const machine_t *); -extern int machine_xt_pravetz16s_cpu12p_init(const machine_t *); -extern int machine_xt_micoms_xl7turbo_init(const machine_t *); -extern int machine_xt_maz1016_init(const machine_t *); - -/* m_xt_compaq.c */ -extern int machine_xt_compaq_deskpro_init(const machine_t *); -extern int machine_xt_compaq_portable_init(const machine_t *); - -/* m_xt_laserxt.c */ -extern int machine_xt_laserxt_init(const machine_t *); +/* 8088 */ #ifdef EMU_DEVICE_H -extern const device_t laserxt_device; +extern const device_t ibmpc_device; #endif -extern int machine_xt_lxt3_init(const machine_t *); +extern int machine_ibmpc_init(const machine_t *); #ifdef EMU_DEVICE_H -extern const device_t lxt3_device; +extern const device_t ibmpc82_device; #endif +extern int machine_ibmpc82_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ibmxt_device; +#endif +extern int machine_ibmxt_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ibmxt86_device; +#endif +extern int machine_ibmxt86_init(const machine_t *); +extern int machine_xt_americxt_init(const machine_t *); +extern int machine_xt_amixt_init(const machine_t *); +extern int machine_xt_ataripc3_init(const machine_t *); +extern int machine_xt_bw230_init(const machine_t *); +extern int machine_xt_mpc1600_init(const machine_t *); +extern int machine_xt_compaq_portable_init(const machine_t *); +extern int machine_xt_dtk_init(const machine_t *); +extern int machine_xt_pcspirit_init(const machine_t *); +extern int machine_genxt_init(const machine_t *); +extern int machine_xt_glabios_init(const machine_t *); +extern int machine_xt_top88_init(const machine_t *); +extern int machine_xt_super16t_init(const machine_t *); +extern int machine_xt_super16te_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t jukopc_device; +#endif +extern int machine_xt_jukopc_init(const machine_t *); +extern int machine_xt_kaypropc_init(const machine_t *); +extern int machine_xt_micoms_xl7turbo_init(const machine_t *); +extern int machine_xt_pc500_init(const machine_t *); +extern int machine_xt_pc700_init(const machine_t *); +extern int machine_xt_pc4i_init(const machine_t *); +extern int machine_xt_openxt_init(const machine_t *); +extern int machine_xt_p3105_init(const machine_t *); +extern int machine_xt_pxxt_init(const machine_t *); +extern int machine_xt_pravetz16_imko4_init(const machine_t *); +extern int machine_xt_pravetz16s_cpu12p_init(const machine_t *); +extern int machine_xt_pb8810_init(const machine_t *); +extern int machine_xt_sansx16_init(const machine_t *); +extern int machine_xt_pcxt_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t vendex_device; +#endif +extern int machine_xt_vendex_init(const machine_t *); +extern int machine_xt_laserxt_init(const machine_t *); +extern int machine_xt_znic_init(const machine_t *); +extern int machine_xt_z151_init(const machine_t *); +extern int machine_xt_z159_init(const machine_t *); +extern int machine_xt_z184_init(const machine_t *); + +/* GC100A */ +extern int machine_xt_p3120_init(const machine_t *); + +/* V20 */ +extern int machine_xt_v20xt_init(const machine_t *); +extern int machine_xt_tuliptc8_init(const machine_t *); + +/* 8086 */ +extern int machine_xt_pc5086_init(const machine_t *); +extern int machine_xt_maz1016_init(const machine_t *); +extern int machine_xt_iskra3104_init(const machine_t *); +extern int machine_xt_lxt3_init(const machine_t *); +extern int machine_xt_compaq_deskpro_init(const machine_t *); -/* m_xt_philips.c */ -extern int machine_xt_p3105_init(const machine_t *); -extern int machine_xt_p3120_init(const machine_t *); /* m_xt_t1000.c */ -extern int machine_xt_t1000_init(const machine_t *); -extern int machine_xt_t1200_init(const machine_t *); - -/* m_xt_zenith.c */ -extern int machine_xt_z184_init(const machine_t *); -extern int machine_xt_z151_init(const machine_t *); -extern int machine_xt_z159_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t t1000_video_device; +extern const device_t t1200_video_device; +#endif +extern int machine_xt_t1000_init(const machine_t *); +extern int machine_xt_t1200_init(const machine_t *); /* m_xt_xi8088.c */ -extern int machine_xt_xi8088_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t xi8088_device; +#endif +extern int machine_xt_xi8088_init(const machine_t *); #endif /*EMU_MACHINE_H*/ diff --git a/src/include/86box/mouse.h b/src/include/86box/mouse.h index d3e33ad32..9745de444 100644 --- a/src/include/86box/mouse.h +++ b/src/include/86box/mouse.h @@ -114,6 +114,7 @@ extern void mouse_subtract_w(int *delta_w, int min, int max, int inve extern void mouse_set_buttons_ex(int b); extern int mouse_get_buttons_ex(void); extern void mouse_set_sample_rate(double new_rate); +extern void mouse_update_sample_rate(void); extern void mouse_set_buttons(int buttons); extern void mouse_get_abs_coords(double *x_abs, double *y_abs); extern void mouse_process(void); diff --git a/src/include/86box/plat.h b/src/include/86box/plat.h index ef06b3429..7b8a34857 100644 --- a/src/include/86box/plat.h +++ b/src/include/86box/plat.h @@ -146,6 +146,7 @@ extern void plat_get_exe_name(char *s, int size); extern void plat_get_global_config_dir(char *outbuf, size_t len); extern void plat_get_global_data_dir(char *outbuf, size_t len); extern void plat_get_temp_dir(char *outbuf, uint8_t len); +extern void plat_get_vmm_dir(char *outbuf, size_t len); extern void plat_init_rom_paths(void); extern int plat_dir_check(char *path); extern int plat_dir_create(char *path); diff --git a/src/include/86box/sio.h b/src/include/86box/sio.h index b86124273..2bae49ae1 100644 --- a/src/include/86box/sio.h +++ b/src/include/86box/sio.h @@ -28,6 +28,15 @@ extern const device_t f82c606_device; extern const device_t f82c710_device; extern const device_t f82c710_pc5086_device; +/* Commodore */ +extern const device_t cbm_io_device; + +/* Dataworld 90C50 (COMBAT) */ +#define DW90C50_IDE 0x00001 + +extern const device_t dw90c50_device; + +extern const device_t pc87310_device; /* SM(S)C */ #define FDC37C651 0x00051 #define FDC37C661 0x00061 diff --git a/src/include/86box/vid_8514a.h b/src/include/86box/vid_8514a.h index 5aa8927e0..6e8528325 100644 --- a/src/include/86box/vid_8514a.h +++ b/src/include/86box/vid_8514a.h @@ -67,8 +67,6 @@ typedef union { typedef struct ibm8514_t { rom_t bios_rom; - rom_t bios_rom2; - mem_mapping_t bios_mapping; uint8_t *rom1; uint8_t *rom2; hwcursor8514_t hwcursor; @@ -107,6 +105,8 @@ typedef struct ibm8514_t { uint64_t dispofftime; struct { + uint16_t scratch0; + uint16_t scratch1; uint16_t subsys_cntl; uint16_t setup_md; uint16_t advfunc_cntl; @@ -253,6 +253,7 @@ typedef struct ibm8514_t { int vdisp; int vdisp2; int disp_cntl; + int disp_cntl_2; int interlace; uint16_t subsys_cntl; uint8_t subsys_stat; @@ -277,6 +278,7 @@ typedef struct ibm8514_t { int _8514on; int _8514crt; PALETTE _8514pal; + uint8_t ven_clock; latch8514_t latch; diff --git a/src/include/86box/vid_ati_mach8.h b/src/include/86box/vid_ati_mach8.h index ad5281ac3..e6fd124de 100644 --- a/src/include/86box/vid_ati_mach8.h +++ b/src/include/86box/vid_ati_mach8.h @@ -109,6 +109,7 @@ typedef struct mach_t { uint16_t src_y; int16_t bres_count; uint16_t clock_sel; + uint16_t clock_sel_mode; uint16_t crt_pitch; uint16_t ge_pitch; uint16_t src_pitch; diff --git a/src/include/86box/vid_cga_comp.h b/src/include/86box/vid_cga_comp.h index 609e6d813..94051b5e5 100644 --- a/src/include/86box/vid_cga_comp.h +++ b/src/include/86box/vid_cga_comp.h @@ -21,11 +21,13 @@ #ifndef VIDEO_CGA_COMP_H #define VIDEO_CGA_COMP_H +#include + #define Bitu unsigned int -#define bool uint8_t void update_cga16_color(uint8_t cgamode); void cga_comp_init(int revision); +void cga_comp_reload(int new_brightness, int new_saturation, int new_sharpness, int new_hue, int new_contrast); uint32_t *Composite_Process(uint8_t cgamode, uint8_t border, uint32_t blocks /*, bool doublewidth*/, uint32_t *TempLine); #endif /*VIDEO_CGA_COMP_H*/ diff --git a/src/include/86box/vid_svga.h b/src/include/86box/vid_svga.h index 5492da18a..ffe4f5808 100644 --- a/src/include/86box/vid_svga.h +++ b/src/include/86box/vid_svga.h @@ -140,6 +140,7 @@ typedef struct svga_t { int vblankend; int render_line_offset; int start_retrace_latch; + int vga_mode; /*The three variables below allow us to implement memory maps like that seen on a 1MB Trio64 : 0MB-1MB - VRAM @@ -347,6 +348,8 @@ extern void ati8514_out(uint16_t addr, uint8_t val, void *priv); extern uint8_t ati8514_in(uint16_t addr, void *priv); extern void ati8514_recalctimings(svga_t *svga); extern uint8_t ati8514_mca_read(int port, void *priv); +extern uint8_t ati8514_rom_readb(uint32_t addr, void *priv); +extern uint16_t ati8514_rom_readw(uint32_t addr, void *priv); extern void ati8514_mca_write(int port, uint8_t val, void *priv); extern void ati8514_pos_write(uint16_t port, uint8_t val, void *priv); extern void ati8514_init(svga_t *svga, void *ext8514, void *dev8514); @@ -497,9 +500,12 @@ extern const device_t bt485a_ramdac_device; extern const device_t gendac_ramdac_device; extern const device_t ibm_rgb528_ramdac_device; extern const device_t ics2494an_305_device; -extern const device_t ati18810_device; -extern const device_t ati18811_0_device; -extern const device_t ati18811_1_device; +extern const device_t ati18810_28800_device; +extern const device_t ati18811_0_28800_device; +extern const device_t ati18811_1_28800_device; +extern const device_t ati18810_mach32_device; +extern const device_t ati18811_0_mach32_device; +extern const device_t ati18811_1_mach32_device; extern const device_t ics2595_device; extern const device_t icd2061_device; extern const device_t ics9161_device; diff --git a/src/include/86box/vid_v6355.h b/src/include/86box/vid_v6355.h new file mode 100644 index 000000000..f8fd11519 --- /dev/null +++ b/src/include/86box/vid_v6355.h @@ -0,0 +1,72 @@ +/* + * 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. + * + * Emulation of the old and new IBM CGA graphics cards. + * + * Authors: Sarah Walker, + * Miran Grca, + * Connor Hyde / starfrost, + * + * Copyright 2008-2018 Sarah Walker. + * Copyright 2016-2018 Miran Grca. + * Copyright 2025 starfrost (refactoring). + */ + +#ifndef VIDEO_V6355_H +#define VIDEO_V6355_H + +typedef struct v6355_t { + mem_mapping_t mapping; + + uint8_t cgastat; + uint8_t cgamode; + uint8_t cgacol; + + uint8_t pad[3]; + uint8_t crtc[32]; + uint8_t v6355data[106]; + uint8_t charbuffer[256]; + + uint16_t ma; + uint16_t maback; + + /* The V6355 has its own set of registers, as well as the emulated MC6845 */ + int v6355reg; + int crtcreg; + int fontbase; + int linepos; + int displine; + int sc; + int vc; + int cgadispon; + int con; + int coff; + int cursoron; + int cgablink; + int vsynctime; + int vadj; + int oddeven; + int display_type; + int firstline; + int lastline; + int drawcursor; + int revision; + int rgb_type; + int double_type; + + uint32_t v6355pal[16]; + + uint64_t dispontime; + uint64_t dispofftime; + + pc_timer_t timer; + + uint8_t * vram; +} v6355_t; + +#endif /*VIDEO_V6355_H*/ diff --git a/src/include/86box/video.h b/src/include/86box/video.h index e302c2538..4271c4f78 100644 --- a/src/include/86box/video.h +++ b/src/include/86box/video.h @@ -139,6 +139,8 @@ typedef struct monitor_t { int mon_cga_palette_static; /* Whether it should not be freed by the API. */ const video_timings_t *mon_vid_timings; int mon_vid_type; + atomic_bool mon_interlace; + atomic_bool mon_composite; struct blit_data_struct *mon_blit_data_ptr; } monitor_t; @@ -401,11 +403,10 @@ extern const device_t gd5446_pci_device; extern const device_t gd5446_stb_pci_device; extern const device_t gd5480_pci_device; - -/* IBM CGA*/ +/* IBM CGA */ extern const device_t cga_device; -/* pravetz CGA */ +/* Pravetz CGA */ extern const device_t cga_pravetz_device; /* Compaq CGA */ @@ -575,7 +576,6 @@ extern const device_t s3_diamond_stealth_2000pro_pci_device; extern const device_t s3_virge_385_pci_device; extern const device_t s3_virge_357_pci_device; extern const device_t s3_virge_357_agp_device; -extern const device_t s3_diamond_stealth_4000_pci_device; extern const device_t s3_diamond_stealth_4000_agp_device; extern const device_t s3_trio3d2x_pci_device; extern const device_t s3_trio3d2x_agp_device; @@ -634,6 +634,9 @@ extern const device_t nv3t_device_agp; /* Wyse 700 */ extern const device_t wy700_device; +/* Yamaha V6355 */ +extern const device_t v6355d_device; + /* Tandy */ extern const device_t tandy_1000_video_device; extern const device_t tandy_1000hx_video_device; diff --git a/src/mac/CMakeLists.txt b/src/mac/CMakeLists.txt index 0562ca01d..c88ddf097 100644 --- a/src/mac/CMakeLists.txt +++ b/src/mac/CMakeLists.txt @@ -52,4 +52,4 @@ set_target_properties(86Box #set(XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "YES") #set(XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-") -#set(XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${CMAKE_CURRENT_SOURCE_DIR}/mac/codesign/dev/app.entitlements) +#set(XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${CMAKE_CURRENT_SOURCE_DIR}/mac/entitlements.plist) diff --git a/src/mac/entitlements.plist b/src/mac/entitlements.plist new file mode 100644 index 000000000..59a80495d --- /dev/null +++ b/src/mac/entitlements.plist @@ -0,0 +1,10 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.disable-library-validation + + + diff --git a/src/machine/CMakeLists.txt b/src/machine/CMakeLists.txt index ae9d2a1a9..816c9d38c 100644 --- a/src/machine/CMakeLists.txt +++ b/src/machine/CMakeLists.txt @@ -19,40 +19,41 @@ add_library(mch OBJECT machine.c machine_table.c m_xt.c - m_xt_compaq.c - m_xt_laserxt.c - m_xt_philips.c m_xt_t1000.c m_xt_xi8088.c - m_xt_zenith.c m_pcjr.c m_amstrad.c - m_amstrad_pc5x86.c m_europc.c m_elt.c m_xt_olivetti.c m_tandy.c m_v86p.c - m_at.c - m_at_commodore.c - m_at_grid.c m_at_t3100e.c m_ps1.c - m_ps1_hdc.c m_ps2_isa.c m_ps2_mca.c - m_at_compaq.c + m_at_common.c m_at_286.c m_at_386sx.c m_at_m6117.c + m_at_386dx.c + m_at_486slc.c m_at_386dx_486.c + m_at_socket1.c + m_at_socket2.c + m_at_socket3.c + m_at_socket3_pci.c + m_at_486_misc.c m_at_socket4.c + m_at_socket4_5.c m_at_socket5.c m_at_socket7_3v.c m_at_socket7.c m_at_sockets7.c m_at_socket8.c m_at_slot1.c + m_at_slot1_2.c + m_at_slot1_socket370.c m_at_slot2.c m_at_socket370.c m_at_misc.c diff --git a/src/machine/m_amstrad.c b/src/machine/m_amstrad.c index 17bcb62bd..389185e60 100644 --- a/src/machine/m_amstrad.c +++ b/src/machine/m_amstrad.c @@ -66,6 +66,7 @@ #include <86box/lpt.h> #include <86box/fdd.h> #include <86box/fdc.h> +#include <86box/hdc.h> #include <86box/sound.h> #include <86box/snd_speaker.h> #include <86box/video.h> @@ -2966,6 +2967,7 @@ machine_amstrad_init(const machine_t *model, int type) device_context(&vid_pc3086_device); ams->language = device_get_config_int("language"); device_context_restore(); + device_add(&xta_wdxt150_pc3086_device); device_add(¶dise_pvga1a_pc3086_device); break; diff --git a/src/machine/m_amstrad_pc5x86.c b/src/machine/m_amstrad_pc5x86.c deleted file mode 100644 index eafa06c1e..000000000 --- a/src/machine/m_amstrad_pc5x86.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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. - * - * Amstrad PC5086 and PC5286 emulation. - * - * Authors: Miran Grca, - * - * Copyright 2025 Miran Grca. - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the: - * - * Free Software Foundation, Inc. - * 59 Temple Place - Suite 330 - * Boston, MA 02111-1307 - * USA. - */ -#include -#include -#include <86box/86box.h> -#include "cpu.h" -#include <86box/device.h> -#include <86box/mem.h> -#include <86box/rom.h> -#include <86box/timer.h> -#include <86box/chipset.h> -#include <86box/machine.h> -#include <86box/nvr.h> -#include <86box/keyboard.h> -#include <86box/sio.h> - -int -machine_pc5086_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pc5086/sys_rom.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_common_init(model); - - device_add(&ct_82c100_device); - device_add(&f82c710_pc5086_device); - - device_add(&kbc_xt_device); - - device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */ - - return ret; -} diff --git a/src/machine/m_at.c b/src/machine/m_at.c deleted file mode 100644 index 09cd9d5cd..000000000 --- a/src/machine/m_at.c +++ /dev/null @@ -1,410 +0,0 @@ -/* - * 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. - * - * Standard PC/AT implementation. - * - * - * - * Authors: Fred N. van Kempen, - * Miran Grca, - * Sarah Walker, - * Jasmine Iwanek, - * - * Copyright 2017-2020 Fred N. van Kempen. - * Copyright 2016-2020 Miran Grca. - * Copyright 2008-2020 Sarah Walker. - * Copyright 2025 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the: - * - * Free Software Foundation, Inc. - * 59 Temple Place - Suite 330 - * Boston, MA 02111-1307 - * USA. - */ -#include -#include -#include -#include -#include <86box/86box.h> -#include <86box/timer.h> -#include <86box/pic.h> -#include <86box/pit.h> -#include <86box/dma.h> -#include <86box/mem.h> -#include <86box/device.h> -#include <86box/fdd.h> -#include <86box/fdc.h> -#include <86box/fdc_ext.h> -#include <86box/nvr.h> -#include <86box/gameport.h> -#include <86box/ibm_5161.h> -#include <86box/keyboard.h> -#include <86box/lpt.h> -#include <86box/rom.h> -#include <86box/hdc.h> -#include <86box/port_6x.h> -#include <86box/machine.h> - -void -machine_at_common_init_ex(const machine_t *model, int type) -{ - machine_common_init(model); - - refresh_at_enable = 1; - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_at); - pic2_init(); - dma16_init(); - - if (!(type & 4)) - device_add(&port_6x_device); - type &= 3; - - if (type == 1) - device_add(&ibmat_nvr_device); - else if (type == 0) - device_add(&at_nvr_device); - - standalone_gameport_type = &gameport_device; -} - -void -machine_at_common_init(const machine_t *model) -{ - machine_at_common_init_ex(model, 0); -} - -void -machine_at_init(const machine_t *model) -{ - machine_at_common_init(model); - - device_add(&kbc_at_device); -} - -static void -machine_at_ibm_common_init(const machine_t *model) -{ - machine_at_common_init_ex(model, 1); - - device_add(&kbc_at_device); - - mem_remap_top(384); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); -} - -void -machine_at_ps2_init(const machine_t *model) -{ - machine_at_common_init(model); - - device_add(&kbc_ps2_device); -} - -void -machine_at_common_ide_init(const machine_t *model) -{ - machine_at_common_init(model); - - device_add(&ide_isa_device); -} - -void -machine_at_ibm_common_ide_init(const machine_t *model) -{ - machine_at_common_init_ex(model, 1); - - device_add(&ide_isa_device); -} - -void -machine_at_ide_init(const machine_t *model) -{ - machine_at_init(model); - - device_add(&ide_isa_device); -} - -void -machine_at_ps2_ide_init(const machine_t *model) -{ - machine_at_ps2_init(model); - - device_add(&ide_isa_device); -} - -static const device_config_t ibmat_config[] = { - // clang-format off - { - .name = "bios", - .description = "BIOS Version", - .type = CONFIG_BIOS, - .default_string = "ibm5170_111585", - .default_int = 0, - .file_filter = "", - .spinner = { 0 }, - .bios = { - { - .name = "62X082x (11/15/85)", - .internal_name = "ibm5170_111585", - .bios_type = BIOS_NORMAL, - .files_no = 2, - .local = 0, - .size = 65536, - .files = { "roms/machines/ibmat/BIOS_5170_15NOV85_U27.BIN", "roms/machines/ibmat/BIOS_5170_15NOV85_U47.BIN", "" } - }, - { - .name = "61X9266 (11/15/85) (Alt)", - .internal_name = "ibm5170_111585_alt", - .bios_type = BIOS_NORMAL, - .files_no = 2, - .local = 0, - .size = 65536, - .files = { "roms/machines/ibmat/BIOS_5170_15NOV85_U27_61X9266.BIN", "roms/machines/ibmat/BIOS_5170_15NOV85_U47_61X9265.BIN", "" } - }, - { - .name = "648009x (06/10/85)", - .internal_name = "ibm5170_061085", - .bios_type = BIOS_NORMAL, - .files_no = 2, - .local = 0, - .size = 65536, - .files = { "roms/machines/ibmat/BIOS_5170_10JUN85_U27.BIN", "roms/machines/ibmat/BIOS_5170_10JUN85_U47.BIN", "" } - }, - { - .name = "618102x (01/10/84)", - .internal_name = "ibm5170_011084", - .bios_type = BIOS_NORMAL, - .files_no = 2, - .local = 0, - .size = 65536, - .files = { "roms/machines/ibmat/BIOS_5170_10JAN84_U27.BIN", "roms/machines/ibmat/BIOS_5170_10JAN84_U47.BIN", "" } - }, - // The following are Diagnostic ROMs. - { - .name = "Supersoft Diagnostics", - .internal_name = "diag_supersoft", - .bios_type = BIOS_NORMAL, - .files_no = 2, - .local = 2, - .size = 65536, - .files = { "roms/machines/diagnostic/5170_EVEN_LOW_U27_27256.bin", "roms/machines/diagnostic/5170_ODD_HIGH_U47_27256.bin", "" } - }, - - { .files_no = 0 } - }, - }, - { - .name = "enable_5161", - .description = "IBM 5161 Expansion Unit", - .type = CONFIG_BINARY, - .default_int = 0 - }, - { .name = "", .description = "", .type = CONFIG_END } - // clang-format on -}; - -const device_t ibmat_device = { - .name = "IBM AT", - .internal_name = "ibmat_device", - .flags = 0, - .local = 0, - .init = NULL, - .close = NULL, - .reset = NULL, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = ibmat_config -}; - -int -machine_at_ibm_init(const machine_t *model) -{ - int ret = 0; - uint8_t enable_5161; - const char *fn[2]; - - /* No ROMs available. */ - if (!device_available(model->device)) - return ret; - - device_context(model->device); - enable_5161 = machine_get_config_int("enable_5161"); - fn[0] = device_get_bios_file(model->device, device_get_config_bios("bios"), 0); - fn[1] = device_get_bios_file(model->device, device_get_config_bios("bios"), 1); - ret = bios_load_interleaved(fn[0], fn[1], 0x000f0000, 65536, 0); - device_context_restore(); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_init(model); - - if (enable_5161) - device_add(&ibm_5161_device); - - return ret; -} - -/* IBM AT machines with custom BIOSes */ -int -machine_at_ibmatquadtel_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/ibmatquadtel/BIOS_30MAR90_U27_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN", - "roms/machines/ibmatquadtel/BIOS_30MAR90_U47_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_init(model); - - return ret; -} - -int -machine_at_ibmatami_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/ibmatami/BIOS_5170_30APR89_U27_AMI_27256.BIN", - "roms/machines/ibmatami/BIOS_5170_30APR89_U47_AMI_27256.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_init(model); - - return ret; -} - -int -machine_at_ibmatpx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Even.bin", - "roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Odd.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_init(model); - - return ret; -} - -static const device_config_t ibmxt286_config[] = { - // clang-format off - { - .name = "enable_5161", - .description = "IBM 5161 Expansion Unit", - .type = CONFIG_BINARY, - .default_int = 0 - }, - { .name = "", .description = "", .type = CONFIG_END } - // clang-format on -}; - -const device_t ibmxt286_device = { - .name = "IBM XT Model 286", - .internal_name = "ibmxt286_device", - .flags = 0, - .local = 0, - .init = NULL, - .close = NULL, - .reset = NULL, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = ibmxt286_config -}; - -int -machine_at_ibmxt286_init(const machine_t *model) -{ - int ret; - uint8_t enable_5161; - - device_context(model->device); - enable_5161 = machine_get_config_int("enable_5161"); - device_context_restore(); - - ret = bios_load_interleaved("roms/machines/ibmxt286/bios_5162_21apr86_u34_78x7460_27256.bin", - "roms/machines/ibmxt286/bios_5162_21apr86_u35_78x7461_27256.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_init(model); - - if (enable_5161) - device_add(&ibm_5161_device); - - return ret; -} - -int -machine_at_pb286_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/pb286/LB_V332P.BIN", - "roms/machines/pb286/HB_V332P.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_init(model); - - return ret; -} - -int -machine_at_siemens_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/siemens/286BIOS.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 1); - - device_add(&kbc_at_siemens_device); - - mem_remap_top(384); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - diff --git a/src/machine/m_at_286.c b/src/machine/m_at_286.c index e13b81853..c85c392b8 100644 --- a/src/machine/m_at_286.c +++ b/src/machine/m_at_286.c @@ -33,6 +33,7 @@ #include <86box/fdc.h> #include <86box/fdc_ext.h> #include <86box/hdc.h> +#include <86box/ibm_5161.h> #include <86box/nvr.h> #include <86box/port_6x.h> #define USE_SIO_DETECT @@ -40,10 +41,310 @@ #include <86box/serial.h> #include <86box/video.h> #include <86box/vid_cga.h> +#include <86box/vid_cga_comp.h> #include <86box/flash.h> #include <86box/machine.h> /* ISA */ +static const device_config_t ibmat_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "ibm5170_111585", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { + .name = "62X082x (11/15/85)", + .internal_name = "ibm5170_111585", + .bios_type = BIOS_NORMAL, + .files_no = 2, + .local = 0, + .size = 65536, + .files = { "roms/machines/ibmat/BIOS_5170_15NOV85_U27.BIN", "roms/machines/ibmat/BIOS_5170_15NOV85_U47.BIN", "" } + }, + { + .name = "61X9266 (11/15/85) (Alt)", + .internal_name = "ibm5170_111585_alt", + .bios_type = BIOS_NORMAL, + .files_no = 2, + .local = 0, + .size = 65536, + .files = { "roms/machines/ibmat/BIOS_5170_15NOV85_U27_61X9266.BIN", "roms/machines/ibmat/BIOS_5170_15NOV85_U47_61X9265.BIN", "" } + }, + { + .name = "648009x (06/10/85)", + .internal_name = "ibm5170_061085", + .bios_type = BIOS_NORMAL, + .files_no = 2, + .local = 0, + .size = 65536, + .files = { "roms/machines/ibmat/BIOS_5170_10JUN85_U27.BIN", "roms/machines/ibmat/BIOS_5170_10JUN85_U47.BIN", "" } + }, + { + .name = "618102x (01/10/84)", + .internal_name = "ibm5170_011084", + .bios_type = BIOS_NORMAL, + .files_no = 2, + .local = 0, + .size = 65536, + .files = { "roms/machines/ibmat/BIOS_5170_10JAN84_U27.BIN", "roms/machines/ibmat/BIOS_5170_10JAN84_U47.BIN", "" } + }, + // The following are Diagnostic ROMs. + { + .name = "Supersoft Diagnostics", + .internal_name = "diag_supersoft", + .bios_type = BIOS_NORMAL, + .files_no = 2, + .local = 2, + .size = 65536, + .files = { "roms/machines/diagnostic/5170_EVEN_LOW_U27_27256.bin", "roms/machines/diagnostic/5170_ODD_HIGH_U47_27256.bin", "" } + }, + + { .files_no = 0 } + }, + }, + { + .name = "enable_5161", + .description = "IBM 5161 Expansion Unit", + .type = CONFIG_BINARY, + .default_int = 0 + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t ibmat_device = { + .name = "IBM AT", + .internal_name = "ibmat_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = ibmat_config +}; + +static void +machine_at_ibm_common_init(const machine_t *model) +{ + machine_at_common_init_ex(model, 1); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + mem_remap_top(384); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); +} + +int +machine_at_ibmat_init(const machine_t *model) +{ + int ret = 0; + uint8_t enable_5161; + const char *fn[2]; + + /* No ROMs available. */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + enable_5161 = machine_get_config_int("enable_5161"); + fn[0] = device_get_bios_file(model->device, device_get_config_bios("bios"), 0); + fn[1] = device_get_bios_file(model->device, device_get_config_bios("bios"), 1); + ret = bios_load_interleaved(fn[0], fn[1], 0x000f0000, 65536, 0); + device_context_restore(); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + if (enable_5161) + device_add(&ibm_5161_device); + + return ret; +} + +static const device_config_t ibmxt286_config[] = { + // clang-format off + { + .name = "enable_5161", + .description = "IBM 5161 Expansion Unit", + .type = CONFIG_BINARY, + .default_int = 0 + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t ibmxt286_device = { + .name = "IBM XT Model 286", + .internal_name = "ibmxt286_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = ibmxt286_config +}; + +int +machine_at_ibmxt286_init(const machine_t *model) +{ + int ret; + uint8_t enable_5161; + + device_context(model->device); + enable_5161 = machine_get_config_int("enable_5161"); + device_context_restore(); + + ret = bios_load_interleaved("roms/machines/ibmxt286/bios_5162_21apr86_u34_78x7460_27256.bin", + "roms/machines/ibmxt286/bios_5162_21apr86_u35_78x7461_27256.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + if (enable_5161) + device_add(&ibm_5161_device); + + return ret; +} + +int +machine_at_ibmatami_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/ibmatami/BIOS_5170_30APR89_U27_AMI_27256.BIN", + "roms/machines/ibmatami/BIOS_5170_30APR89_U47_AMI_27256.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + return ret; +} + +int +machine_at_cmdpc_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/cmdpc30/commodore pc 30 iii even.bin", + "roms/machines/cmdpc30/commodore pc 30 iii odd.bin", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + machine_at_init(model); + + mem_remap_top(384); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add(&cbm_io_device); + + return ret; +} + +int +machine_at_portableii_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleavedr("roms/machines/portableii/109740-001.rom", + "roms/machines/portableii/109739-001.rom", + 0x000f8000, 65536, 0); + + if (bios_only || !ret) + return ret; + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + video_reset(gfxcard[0]); + + device_add(&compaq_device); + + machine_at_common_init(model); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_portableiii_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linearr("roms/machines/portableiii/K Combined.bin", + 0x000f8000, 65536, 0); + + + if (bios_only || !ret) + return ret; + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + video_reset(gfxcard[0]); + + if (hdc_current[0] == HDC_INTERNAL) + device_add(&ide_isa_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&compaq_plasma_device); + + device_add(&compaq_device); + + machine_at_common_init(model); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_grid1520_init(const machine_t *model) { + int ret = 0; + + ret = bios_load_linear("roms/machines/grid1520/grid1520_891025.rom", + 0x000f8000, 0x8000, 0); + if (bios_only || !ret) + return ret; + + machine_at_common_ide_init(model); + mem_remap_top(384); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + // for now just select CGA with amber monitor + //device_add(&cga_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add(&grid1520_device); + + return ret; +} + int machine_at_mr286_init(const machine_t *model) { @@ -57,7 +358,7 @@ machine_at_mr286_init(const machine_t *model) return ret; machine_at_common_ide_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -65,6 +366,23 @@ machine_at_mr286_init(const machine_t *model) return ret; } +uint8_t +machine_ncr_p1_handler(void) +{ + /* switch settings + * bit 7: keyboard disable + * bit 6: display type (0 color, 1 mono) + * bit 5: power-on default speed (0 high, 1 low) + * bit 4: sense RAM size (0 unsupported, 1 512k on system board) + * bit 3: coprocessor detect + * bit 2: unused + * bit 1: high/auto speed + * bit 0: dma mode + */ + /* (B0 or F0) | 0x04 | (display on bit 6) | (fpu on bit 3) */ + return (video_is_mda() ? 0x40 : 0x00) | (hasfpu ? 0x08 : 0x00) | 0x90; +} + /* * Current bugs: * - ctrl-alt-del produces an 8042 error @@ -82,7 +400,7 @@ machine_at_pc8_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_ncr_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -110,7 +428,125 @@ machine_at_m290_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_olivetti_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_ibmatpx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Even.bin", + "roms/machines/ibmatpx/BIOS ROM - PhoenixBIOS A286 - Version 1.01 - Odd.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + return ret; +} + +int +machine_at_ibmatquadtel_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/ibmatquadtel/BIOS_30MAR90_U27_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN", + "roms/machines/ibmatquadtel/BIOS_30MAR90_U47_QUADTEL_ENH_286_BIOS_3.05.01_27256.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + return ret; +} + +int +machine_at_pb286_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/pb286/LB_V332P.BIN", + "roms/machines/pb286/HB_V332P.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_init(model); + + return ret; +} + +int +machine_at_mbc17_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/mbc17/SAT200C_U45EVEN_FB3H2.bin", + "roms/machines/mbc17/SAT200C_U44ODD_FB3J2.bin", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_ide_init(model); + device_add(&sanyo_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_ax286_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/ax286/AM27C512@DIP28_even.BIN", + "roms/machines/ax286/AM27C512@DIP28_odd.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_ide_init(model); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_siemens_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/siemens/286BIOS.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 1); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + mem_remap_top(384); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); return ret; } @@ -126,7 +562,7 @@ machine_at_ctat_common_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); } int @@ -159,7 +595,7 @@ machine_at_super286c_init(const machine_t *model) machine_at_common_init(model); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -233,7 +669,7 @@ machine_at_quadt286_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -246,7 +682,7 @@ machine_at_quadt286_init(const machine_t *model) void machine_at_headland_common_init(const machine_t *model, int type) { - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if ((type != 2) && (fdc_current[0] == FDC_INTERNAL)) device_add(&fdc_at_device); @@ -299,7 +735,7 @@ machine_at_ataripc4_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -322,7 +758,7 @@ machine_at_neat_ami_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -352,7 +788,7 @@ machine_at_3302_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine)); - device_add(&kbc_at_ncr_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -369,7 +805,7 @@ machine_at_px286_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -379,23 +815,38 @@ machine_at_px286_init(const machine_t *model) return ret; } +/* SCAMP */ +int +machine_at_pc7286_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc7286/PC7286 BIOS (AM27C010@DIP32).BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&gd5401_onboard_device); + + device_add_params(&dw90c50_device, (void *) DW90C50_IDE); + device_add(&vl82c113_device); /* The keyboard controller is part of the VL82c113. */ + + device_add(&vlsi_scamp_device); + + return ret; +} + /* SCAT */ static void machine_at_scat_init(const machine_t *model, int is_v4, int is_ami) { machine_at_common_init(model); - if (machines[machine].bus_flags & MACHINE_BUS_PS2) { - if (is_ami) - device_add(&kbc_ps2_ami_device); - else - device_add(&kbc_ps2_device); - } else { - if (is_ami) - device_add(&kbc_at_ami_device); - else - device_add(&kbc_at_device); - } + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (is_v4) device_add(&scat_4_device); @@ -403,6 +854,30 @@ machine_at_scat_init(const machine_t *model, int is_v4, int is_ami) device_add(&scat_device); } +int +machine_at_pc5286_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc5286/PC5286", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + /* Patch the checksum to avoid checksum error. */ + if (rom[0xffff] == 0x2c) + rom[0xffff] = 0x2b; + + machine_at_scat_init(model, 1, 0); + + device_add(&f82c710_device); + + device_add(&ide_isa_device); + + return ret; +} + int machine_at_gw286ct_init(const machine_t *model) { @@ -414,10 +889,10 @@ machine_at_gw286ct_init(const machine_t *model) if (bios_only || !ret) return ret; - device_add(&f82c710_device); - machine_at_scat_init(model, 1, 0); + device_add(&f82c710_device); + device_add(&ide_isa_device); return ret; diff --git a/src/machine/m_at_386dx.c b/src/machine/m_at_386dx.c new file mode 100644 index 000000000..90461d554 --- /dev/null +++ b/src/machine/m_at_386dx.c @@ -0,0 +1,395 @@ +/* + * 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 386DX machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/vid_cga.h> +#include <86box/vid_cga_comp.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* ISA */ +uint8_t +machine_compaq_p1_handler(void) +{ + return machine_generic_p1_handler() | (hasfpu ? 0x00 : 0x04); +} + +static void +machine_at_deskpro386_common_init(const machine_t *model) +{ + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + video_reset(gfxcard[0]); + + device_add(&compaq_386_device); + + machine_at_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); +} + +int +machine_at_deskpro386_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linearr("roms/machines/deskpro386/1986-09-04-HI.json.bin", + 0x000f8000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_deskpro386_common_init(model); + + return ret; +} + +int +machine_at_deskpro386_05_1988_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linearr("roms/machines/deskpro386/1988-05-10.json.bin", + 0x000f8000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_deskpro386_common_init(model); + + return ret; +} + +int +machine_at_portableiii386_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linearr("roms/machines/portableiii/P.2 Combined.bin", + 0x000f0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + video_reset(gfxcard[0]); + + if (hdc_current[0] == HDC_INTERNAL) + device_add(&ide_isa_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&compaq_plasma_device); + + device_add(&compaq_386_device); + + machine_at_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_micronics386_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/micronics386/386-Micronics-09-00021-EVEN.BIN", + "roms/machines/micronics386/386-Micronics-09-00021-ODD.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_init(model); + + device_add(&port_92_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_micronics386px_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/micronics386/386-Micronics-09-00021-LO.BIN", + "roms/machines/micronics386/386-Micronics-09-00021-HI.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_init(model); + + device_add(&port_92_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* ACC 2168 */ +int +machine_at_acc386_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/acc386/acc386.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&acc2168_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* C&T 386/AT */ +int +machine_at_ecs386_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/ecs386/AMI BIOS for ECS-386_32 motherboard - L chip.bin", + "roms/machines/ecs386/AMI BIOS for ECS-386_32 motherboard - H chip.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&cs8230_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_spc6000a_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/spc6000a/3c80.u27", + "roms/machines/spc6000a/9f80.u26", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 1); + + device_add(&cs8230_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_tandy4000_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tandy4000/BIOS Tandy 4000 v1.03.01.bin", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&cs8230_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* ALi M1429 */ +int +machine_at_ecs386v_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ecs386v/PANDA_386V.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&ali1429_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* OPTi 391 */ +int +machine_at_dataexpert386wb_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/dataexpert386wb/st0386-wb-ver2-0-618f078c738cb397184464.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti391_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* OPTi 495SLC */ +int +machine_at_opti495_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/award495/opt495s.awa", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti495slc_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* SiS 310 */ +int +machine_at_asus3863364k_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/asus3863364k/am27c512dip28-64b53c26be3d8160533563.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&rabbit_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_asus386_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/asus386/ASUS_ISA-386C_BIOS.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&rabbit_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c index 812e93c79..f4fb1f713 100644 --- a/src/machine/m_at_386dx_486.c +++ b/src/machine/m_at_386dx_486.c @@ -6,13 +6,11 @@ * * This file is part of the 86Box distribution. * - * Implementation of 386DX and 486 machines. - * - * + * Implementation of 386DX/486 machines. * * Authors: Miran Grca, * - * Copyright 2016-2020 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -50,274 +48,13 @@ #include <86box/plat_unused.h> #include <86box/sound.h> -/* 386DX */ +/* ALi M1429G */ int -machine_at_acc386_init(const machine_t *model) +machine_at_exp4349_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/acc386/acc386.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&acc2168_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_asus3863364k_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/asus3863364k/am27c512dip28-64b53c26be3d8160533563.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&rabbit_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_asus386_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/asus386/ASUS_ISA-386C_BIOS.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&rabbit_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_tandy4000_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tandy4000/BIOS Tandy 4000 v1.03.01.bin", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&cs8230_device); - device_add(&kbc_at_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_dtk461_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/dtk461/DTK.BIO", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&sl82c461_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -static void -machine_at_sis401_common_init(const machine_t *model) -{ - machine_at_common_init(model); - device_add(&sis_85c401_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); -} - -int -machine_at_sis401_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/sis401/SIS401-2.AMI", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis401_common_init(model); - - return ret; -} - -int -machine_at_isa486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/isa486/ISA-486.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis401_common_init(model); - - return ret; -} - -int -machine_at_av4_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/av4/amibios_486dx_isa_bios_aa4025963.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&sis_85c460_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_valuepoint433_init(const machine_t *model) // hangs without the PS/2 mouse -{ - int ret; - - ret = bios_load_linear("roms/machines/valuepoint433/$IMAGEP.FLH", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_ide_init(model); - device_add(&sis_85c461_device); - if (gfxcard[0] == VID_INTERNAL) - device_add(&et4000w32_onboard_device); - - device_add_params(&fdc37c6xx_device, (void *) (FDC37C661 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_ecs386_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/ecs386/AMI BIOS for ECS-386_32 motherboard - L chip.bin", - "roms/machines/ecs386/AMI BIOS for ECS-386_32 motherboard - H chip.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&cs8230_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_spc6000a_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/spc6000a/3c80.u27", - "roms/machines/spc6000a/9f80.u26", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 1); - device_add(&cs8230_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_ecs386v_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ecs386v/PANDA_386V.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&ali1429_device); - device_add(&kbc_ps2_intel_ami_pci_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_rycleopardlx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/rycleopardlx/486-RYC-Leopard-LX.BIN", + ret = bios_load_linear("roms/machines/exp4349/biosdump.bin", 0x000f0000, 65536, 0); if (bios_only || !ret) @@ -325,240 +62,9 @@ machine_at_rycleopardlx_init(const machine_t *model) machine_at_common_init(model); - device_add(&opti283_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_486vchd_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486vchd/486-4386-VC-HD.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&via_vt82c49x_device); - device_add(&kbc_at_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_cs4031_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/cs4031/CHIPS_1.AMI", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&cs4031_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_pb410a_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pb410a/pb410a.080337.4abf.u25.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ibm_common_ide_init(model); - - device_add(&kbc_ps2_device); - - device_add(&acc3221_device); - device_add(&acc2168_device); - - device_add(&phoenix_486_jumper_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - return ret; -} - -int -machine_at_vect486vl_init(const machine_t *model) // has HDC problems -{ - int ret; - - ret = bios_load_linear("roms/machines/vect486vl/aa0500.ami", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - machine_at_common_init_ex(model, 2); - - device_add(&vl82c480_device); - - device_add(&vl82c113_device); - - device_add(&ide_isa_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); - - return ret; -} - -int -machine_at_d824_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/d824/fts-biosupdated824noflashbiosepromv320-320334-160.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - machine_at_common_init_ex(model, 2); - - device_add(&vl82c480_device); - - /* - Technically, it should be the VL82C114 but we do not have - a proper datasheet of it that tells us the registers. - */ - device_add(&vl82c113_device); - - device_add(&ide_isa_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C651); - - return ret; -} - -int -machine_at_tuliptc38_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tuliptc38/TULIP1.BIN", - 0x000f0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - device_add(&vl82c486_device); - device_add(&tulip_jumper_device); - - device_add(&vl82c113_device); - - device_add(&ide_isa_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); - - if (gfxcard[0] == VID_INTERNAL) { - bios_load_aux_linear("roms/machines/tuliptc38/VBIOS.BIN", - 0x000c0000, 32768, 0); - - device_add(machine_get_vid_device(machine)); - } else for (uint16_t i = 0; i < 32768; i++) - rom[i] = mem_readb_phys(0x000c0000 + i); - - mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000); - mem_mapping_set_exec(&bios_mapping, rom); - - return ret; -} - -int -machine_at_martin_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/martin/NONSCSI.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - device_add(&vl82c480_device); - device_add(&vl82c113_device); - - device_add(&ide_vlb_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); - - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_acera1g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/acera1g/4alo001.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); device_add(&ali1429g_device); - if (gfxcard[0] == VID_INTERNAL) - device_add(&gd5428_onboard_device); - - device_add(&kbc_ps2_acer_pci_device); - - device_add_params(&pc87310_device, (void *) (PC87310_ALI)); - device_add(&ide_ali5213_device); - - return ret; -} - -int -machine_at_acerv10_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/acerv10/ALL.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&sis_85c461_device); - device_add(&kbc_ps2_acer_pci_device); - device_add(&ide_isa_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -566,117 +72,13 @@ machine_at_acerv10_init(const machine_t *model) return ret; } +/* OPTi 495SX */ int -machine_at_decpclpv_init(const machine_t *model) +machine_at_c747_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/decpclpv/bios.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&sis_85c461_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&kbc_ps2_phoenix_pci_device); - - device_add(&ide_isa_2ch_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C663 | FDC37C6XX_IDE_PRI)); - - return ret; -} - -int -machine_at_dell466np_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/dell466np/466np.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&sis_85c461_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - else { - for (uint16_t i = 0; i < 32768; i++) - rom[i] = mem_readb_phys(0x000c0000 + i); - } - mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000); - mem_mapping_set_exec(&bios_mapping, rom); - - device_add(&kbc_ps2_phoenix_pci_device); - - device_add(&ide_isa_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C661 | FDC37C6XX_IDE_PRI)); - - return ret; -} - -static void -machine_at_ali1429_common_init(const machine_t *model, int is_green) -{ - machine_at_common_init(model); - - if (is_green) - device_add(&ali1429g_device); - else - device_add(&ali1429_device); - - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); -} - -int -machine_at_ali1429_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ali1429/ami486.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ali1429_common_init(model, 0); - - return ret; -} - -int -machine_at_winbios1429_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/win486/ali1429g.amw", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ali1429_common_init(model, 1); - - return ret; -} - -int -machine_at_opti495_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/award495/opt495s.awa", + ret = bios_load_linear("roms/machines/c747/486-C747 Tandon.BIN", 0x000f0000, 65536, 0); if (bios_only || !ret) @@ -684,12 +86,16 @@ machine_at_opti495_init(const machine_t *model) machine_at_common_init(model); - device_add(&opti495slc_device); + /* The EFAR chipset is a rebrand of the OPTi 495SX. */ + device_add(&opti495sx_device); - device_add(&kbc_at_device); + /* + No idea what KBC it actually has but this produces the + desired behavior: command A9 does absolutely nothing. + */ + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); + device_add_params(&um866x_device, (void *) (UM82C862F | UM866X_IDE_PRI)); return ret; } @@ -701,7 +107,7 @@ machine_at_opti495_ami_common_init(const machine_t *model) device_add(&opti495sx_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -738,2224 +144,3 @@ machine_at_opti495_mr_init(const machine_t *model) return ret; } - -int -machine_at_c747_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/c747/486-C747 Tandon.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - /* The EFAR chipset is a rebrand of the OPTi 495SX. */ - device_add(&opti495sx_device); - - /* - No idea what KBC it actually has but this produces the - desired behavior: command A9 does absolutely nothing. - */ - device_add(&kbc_at_siemens_device); - device_add_params(&um866x_device, (void *) (UM82C862F | UM866X_IDE_PRI)); - - return ret; -} - -int -machine_at_exp4349_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/exp4349/biosdump.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&ali1429g_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - return ret; -} - -static void -machine_at_403tg_common_init(const machine_t *model, int nvr_hack) -{ - if (nvr_hack) { - machine_at_common_init_ex(model, 2); - device_add(&ami_1994_nvr_device); - } else - machine_at_common_init(model); - - device_add(&opti895_device); - - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); -} - -int -machine_at_403tg_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/403tg/403TG.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_403tg_common_init(model, 0); - - return ret; -} - -int -machine_at_403tg_d_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/403tg_d/J403TGRevD.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_403tg_common_init(model, 1); - - return ret; -} - -int -machine_at_403tg_d_mr_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/403tg_d/MRBiosOPT895.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_403tg_common_init(model, 0); - - return ret; -} - -static const device_config_t pb450_config[] = { - // clang-format off - { - .name = "bios", - .description = "BIOS Version", - .type = CONFIG_BIOS, - .default_string = "pb450a", - .default_int = 0, - .file_filter = "", - .spinner = { 0 }, - .bios = { - { .name = "PhoenixBIOS 4.03 - Revision PCI 1.0A", .internal_name = "pb450a_pci10a" /*"pci10a"*/, .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/pb450/OPTI802.bin", "" } }, - { .name = "PhoenixBIOS 4.03 - Revision PNP 1.1A", .internal_name = "pb450a", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/pb450/PNP11A.bin", "" } }, - { .name = "PhoenixBIOS 4.05 - Revision P4HS20 (by Micro Firmware)", .internal_name = "pb450a_p4hs20", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/pb450/p4hs20.bin", "" } }, - { .files_no = 0 } - }, - }, - { .name = "", .description = "", .type = CONFIG_END } - // clang-format on -}; - -const device_t pb450_device = { - .name = "Packard Bell PB450", - .internal_name = "pb450_device", - .flags = 0, - .local = 0, - .init = NULL, - .close = NULL, - .reset = NULL, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = pb450_config -}; - -int -machine_at_pb450_init(const machine_t *model) -{ - int ret = 0; - const char* fn; - - /* No ROMs available */ - if (!device_available(model->device)) - return ret; - - device_context(model->device); - fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); - ret = bios_load_linear(fn, 0x000e0000, 131072, 0); - device_context_restore(); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - device_add(&ide_vlb_2ch_device); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 5, 6, 7, 8); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&opti895_device); - device_add(&opti602_device); - device_add(&opti822_device); - device_add(&kbc_ps2_phoenix_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); - device_add(&ide_opti611_vlb_device); - device_add(&intel_flash_bxt_device); - device_add(&phoenix_486_jumper_pci_device); - - return ret; -} - -static void -machine_at_pc330_6573_common_init(const machine_t *model) -{ - machine_at_common_init_ex(model, 2); - device_add(&ide_vlb_2ch_device); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 5, 6, 7, 8); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 9, 10, 11, 12); - /* This is a guess because the BIOS always gives it a video BIOS - and never gives it an IRQ, so it is impossible to known for - certain until we obtain PCI readouts from the real machine. */ - pci_register_slot(0x0E, PCI_CARD_VIDEO, 13, 14, 15, 16); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&opti602_device); - device_add(&opti802g_device); - device_add(&opti822_device); - device_add(&kbc_ps2_ami_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); - device_add(&ide_opti611_vlb_device); - device_add(&intel_flash_bxt_device); -} - -int -machine_at_aptiva510_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/aptiva510/$IMAGES.USF", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_pc330_6573_common_init(model); - - return ret; -} - -int -machine_at_pc330_6573_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pc330_6573/$IMAGES.USF", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_pc330_6573_common_init(model); - - return ret; -} - -int -machine_at_mvi486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/mvi486/MVI627.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&opti498_device); - - device_add(&kbc_at_device); - - device_add(&ide_isa_device); - device_add_params(&pc873xx_device, (void *) (PCX73XX_IDE_PRI | PCX730X_398)); - - return ret; -} - -static void -machine_at_sis_85c471_common_init(const machine_t *model) -{ - machine_at_common_init(model); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&sis_85c471_device); -} - -int -machine_at_ami471_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ami471/SIS471BE.AMI", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_advantage40xxd_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/advantage40xxd/AST101.09A", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&sis_85c471_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&kbc_ps2_phoenix_device); - device_add_params(&um866x_device, (void *) (UM82C863F | UM866X_IDE_PRI)); - - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_vli486sv2g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/vli486sv2g/0402.001", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis_85c471_common_init(model); - device_add(&kbc_ps2_ami_device); - - return ret; -} - -int -machine_at_dtk486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/dtk486/4siw005.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_device); - - return ret; -} - -int -machine_at_px471_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/px471/SIS471A1.PHO", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis_85c471_common_init(model); - device_add(&ide_vlb_device); - device_add(&kbc_at_device); - - return ret; -} - -int -machine_at_win471_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/win471/486-SiS_AC0360136.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_pci400ca_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pci400ca/486-AA008851.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SCSI, 1, 2, 3, 4); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_at_ami_device); - device_add(&sio_device); - device_add(&intel_flash_bxt_ami_device); - - device_add(&i420tx_device); - device_add(&ncr53c810_onboard_pci_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_vi15g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/vi15g/vi15gr23.rom", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_greenb_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/greenb/4gpv31-ami-1993-8273517.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&contaq_82c597_device); - - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_4gpv5_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/4gpv5/4GPV5.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&contaq_82c596a_device); - - device_add(&kbc_at_device); - - return ret; -} - -static void -machine_at_sis_85c496_common_init(UNUSED(const machine_t *model)) -{ - device_add(&ide_pci_2ch_device); - - pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); - pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - - pci_set_irq_routing(PCI_INTA, PCI_IRQ_DISABLED); - pci_set_irq_routing(PCI_INTB, PCI_IRQ_DISABLED); - pci_set_irq_routing(PCI_INTC, PCI_IRQ_DISABLED); - pci_set_irq_routing(PCI_INTD, PCI_IRQ_DISABLED); -} - -int -machine_at_r418_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/r418/r418i.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_device); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_pci_device); - - return ret; -} - -int -machine_at_m4li_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/m4li/M4LI.04S", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_device); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_pci_device); - - return ret; -} - -int -machine_at_ls486e_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ls486e/LS486E RevC.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_ls486e_device); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_ami_pci_device); - - return ret; -} - -int -machine_at_4dps_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/4dps/4DPS172G.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_device); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add_params(&w837x7_device, (void *) (W83787IF | W837X7_KEY_89)); - device_add(&kbc_ps2_ami_device); - - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_ms4144_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ms4144/ms-4144-1.4.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_ls486e_device); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_at_ami_device); - - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_acerp3_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/acerp3/Acer Mate 600 P3 BIOS U13 V2.0R02-J3 ACR8DE00-S00-950911-R02-J3.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_device); - pci_register_slot(0x09, PCI_CARD_VIDEO, 0, 0, 0, 0); - pci_register_slot(0x0A, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); - - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_acer_pci_device); - device_add(&ide_cmd640_pci_legacy_only_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(&gd5434_onboard_pci_device); - - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_486sp3c_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486sp3c/SI4I0306.AWD", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_device); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_ami_pci_device); - - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_4saw2_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/4saw2/4saw0911.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - machine_at_sis_85c496_common_init(model); - device_add(&sis_85c496_device); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add_params(&w837x7_device, (void *) (W83777F | W837X7_KEY_89)); - device_add(&kbc_ps2_pci_device); - - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_alfredo_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_combined("roms/machines/alfredo/1010AQ0_.BIO", - "roms/machines/alfredo/1010AQ0_.BI1", 0x1c000, 128); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - device_add(&amstrad_megapc_nvr_device); - device_add(&ide_pci_device); - - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 2, 1, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_phoenix_device); - device_add(&sio_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C663); - device_add(&intel_flash_bxt_ami_device); - - device_add(&i420tx_device); - - return ret; -} - -int -machine_at_ninja_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_combined("roms/machines/ninja/1008AY0_.BIO", - "roms/machines/ninja/1008AY0_.BI1", 0x1c000, 128); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - device_add(&amstrad_megapc_nvr_device); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 1, 2); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 1, 2, 1); - device_add(&kbc_ps2_phoenix_device); - device_add(&intel_flash_bxt_ami_device); - - device_add(&i420ex_device); - device_add_params(&i82091aa_device, (void *) I82091AA_022); - - return ret; -} - -int -machine_at_bat4ip3e_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/bat4ip3e/404C.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_IDE, 0xfe, 0xff, 0, 0); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 1, 2); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 1, 2, 1); - pci_register_slot(0x0a, PCI_CARD_NORMAL, 1, 2, 1, 2); - - device_add(&phoenix_486_jumper_pci_device); - device_add(&kbc_ps2_pci_device); - device_add(&i420ex_device); - device_add(&ide_cmd640_pci_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - - return ret; -} - -int -machine_at_486pi_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486pi/486pi.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_NORMAL, 1, 2, 1, 2); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 1, 2); - - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&i420ex_device); - - return ret; -} - -int -machine_at_sb486p_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/sb486p/amiboot.rom", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 1, 2); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); - - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&i82091aa_device, (void *) I82091AA_022); - device_add(&i420ex_device); - - return ret; -} - -int -machine_at_486sp3_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486sp3/awsi2737.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&ide_isa_device); - - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SCSI, 1, 2, 3, 4); /* 01 = SCSI */ - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 03 = Slot 1 */ - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ - pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */ - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_at_ami_device); /* Uses the AMIKEY KBC */ - device_add(&sio_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C663 | FDC37C6XX_IDE_PRI)); - device_add(&sst_flash_29ee010_device); - - device_add(&i420tx_device); - device_add(&ncr53c810_onboard_pci_device); - - return ret; -} - -int -machine_at_amis76_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_inverted("roms/machines/s76p/S76P.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - // pci_register_slot(0x01, PCI_CARD_IDE, 1, 2, 3 ,4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); - device_add(&sio_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_ami_device); - - device_add(&i420tx_device); - // device_add(&ide_cmd640_pci_device); /* is this actually cmd640? is it single channel? */ - device_add(&ide_pci_device); - - return ret; -} - -int -machine_at_pci400cb_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pci400cb/032295.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - device_add(&ami_1994_nvr_device); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 3, 2, 1); /* 0F = Slot 1 */ - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 0E = Slot 2 */ - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 0D = Slot 3 */ - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 0C = Slot 4 */ - device_add(&kbc_ps2_ami_pci_device); /* Assume AMI Megakey 1993 standalone ('P') - because of the Tekram machine below. */ - - device_add(&ims8848_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_g486ip_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/g486ip/G486IP.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - device_add(&ami_1992_nvr_device); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 03 = Slot 1 */ - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 05 = Slot 3 */ - device_add(&kbc_ps2_ami_pci_device); /* AMI Megakey 1993 stanalone ('P') */ - - device_add(&ims8848_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_486sp3g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486sp3g/PCI-I-486SP3G_0306.001 (Beta).bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&ide_isa_device); - - pci_init(PCI_CONFIG_TYPE_2); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SCSI, 1, 2, 3, 4); /* 01 = SCSI */ - pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 06 = Slot 1 */ - pci_register_slot(0x05, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 05 = Slot 2 */ - pci_register_slot(0x04, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 04 = Slot 3 */ - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); /* Uses the AMIKEY KBC */ - device_add(&sio_zb_device); - device_add_params(&pc873xx_device, (void *) (PC87332 | PCX73XX_IDE_PRI | PCX730X_398)); - device_add(&sst_flash_29ee010_device); - - device_add(&i420zx_device); - device_add(&ncr53c810_onboard_pci_device); - - return ret; -} - -static const device_config_t sb486pv_config[] = { - // clang-format off - { - .name = "bios", - .description = "BIOS Version", - .type = CONFIG_BIOS, - .default_string = "sb486pv", - .default_int = 0, - .file_filter = "", - .spinner = { 0 }, - .bios = { - { .name = "AMI WinBIOS (062594) - Revision 0108", .internal_name = "sb486pv_0108", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/sb486pv/41-0108-062594-SATURN2.rom", "" } }, - { .name = "AMI WinBIOS (062594) - Revision 0301", .internal_name = "sb486pv_0301", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/sb486pv/0301-062594-SATURN2.rom", "" } }, - { .name = "AMIBIOS 6 (071595) - Revision 1301", .internal_name = "sb486pv", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/sb486pv/amiboot.rom", "" } }, - { .files_no = 0 } - }, - }, - { .name = "", .description = "", .type = CONFIG_END } - // clang-format on -}; - -const device_t sb486pv_device = { - .name = "ICS SB486PV", - .internal_name = "sb486pv_device", - .flags = 0, - .local = 0, - .init = NULL, - .close = NULL, - .reset = NULL, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = sb486pv_config -}; - -int -machine_at_sb486pv_init(const machine_t *model) -{ - int ret = 0; - const char* fn; - - /* No ROMs available */ - if (!device_available(model->device)) - return ret; - - device_context(model->device); - fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); - if (!strcmp(fn, "roms/machines/sb486pv/amiboot.rom")) - ret = bios_load_linear(fn, 0x000e0000, 131072, 0); - else - ret = bios_load_linear_inverted(fn, 0x000e0000, 131072, 0); - device_context_restore(); - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_2); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0e, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x0f, PCI_CARD_VIDEO, 1, 2, 3, 4); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&kbc_ps2_ami_pci_device); - device_add(&sio_zb_device); - device_add(&ide_rz1000_pci_single_channel_device); - device_add_params(&i82091aa_device, (void *) I82091AA_26E); - if (!strcmp(fn, "roms/machines/sb486pv/amiboot.rom")) - device_add(&intel_flash_bxt_device); - else - device_add(&intel_flash_bxt_ami_device); - - device_add(&i420zx_device); - - return ret; -} - -int -machine_at_486ap4_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486ap4/0205.002", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - /* Excluded: 5, 6, 7, 8 */ - pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 09 = Slot 1 */ - pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 0a = Slot 2 */ - pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 0b = Slot 3 */ - pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 0c = Slot 4 */ - device_add(&kbc_ps2_ami_pci_device); /* Uses the AMIKEY KBC */ - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&i420ex_device); - - return ret; -} - -int -machine_at_g486vpa_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/g486vpa/3.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add(&via_vt82c49x_pci_ide_device); - device_add(&via_vt82c505_device); - device_add_params(&pc873xx_device, (void *) (PC87332 | PCX73XX_IDE_SEC | PCX730X_398)); - device_add(&kbc_ps2_ami_pci_device); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_486vipio2_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/486vipio2/1175G701.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add(&via_vt82c49x_pci_ide_device); - device_add(&via_vt82c505_device); - device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_ps2_ami_pci_device); - device_add(&winbond_flash_w29c010_device); - - return ret; -} - -int -machine_at_abpb4_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/abpb4/486-AB-PB4.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CAN_SWITCH_TYPE); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&ali1489_device); - device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_at_device); -#if 0 - device_add(&intel_flash_bxt_device); -#endif - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_win486pci_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/win486pci/v1hj3.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&ali1489_device); - device_add_params(&gm82c803ab_device, (void *) GM82C803B); - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_ms4145_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ms4145/AG56S.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add(&ali1489_device); - device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_at_ami_device); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_sbc490_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/sbc490/07159589.rom", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x01, PCI_CARD_VIDEO, 4, 1, 2, 3); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&ali1489_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_ami_device); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_tf486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tf486/tf486v10.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - - device_add(&ali1489_device); - device_add(&kbc_at_phoenix_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_NO_NVR)); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_arb1476_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/arb1476/w1476b.v21", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - - device_add(&ali1489_device); - device_add_params(&fdc37c669_device, (void *) 0); - device_add(&kbc_ps2_device); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_itoxstar_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/itoxstar/STARA.ROM", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x1F, PCI_CARD_NORMAL, 1, 2, 3, 4); - device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); - device_add(&stpc_client_device); - device_add(&sst_flash_29ee020_device); - device_add(&w83781d_device); /* fans: Chassis, CPU, unused; temperatures: Chassis, CPU, unused */ - hwm_values.fans[2] = 0; /* unused */ - hwm_values.temperatures[2] = 0; /* unused */ - hwm_values.voltages[0] = 0; /* Vcore unused */ - - return ret; -} - -int -machine_at_arb1423c_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/arb1423c/A1423C.v12", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x1F, PCI_CARD_NORMAL, 1, 0, 0, 0); - pci_register_slot(0x1E, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x1D, PCI_CARD_NORMAL, 3, 4, 1, 2); - device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); - device_add(&stpc_consumer2_device); - device_add(&winbond_flash_w29c020_device); - - return ret; -} - -int -machine_at_arb1479_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/arb1479/1479A.rom", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x1F, PCI_CARD_NORMAL, 1, 0, 0, 0); - pci_register_slot(0x1E, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x1D, PCI_CARD_NORMAL, 3, 4, 1, 2); - device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); - device_add(&stpc_consumer2_device); - device_add(&winbond_flash_w29c020_device); - - return ret; -} - -int -machine_at_iach488_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/iach488/FH48800B.980", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); - device_add(&stpc_consumer2_device); - device_add(&sst_flash_29ee020_device); - - return ret; -} - -int -machine_at_pcm9340_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pcm9340/9340v110.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x1D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x1E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x1F, PCI_CARD_NORMAL, 2, 3, 4, 1); - device_add_inst_params(&w83977_device, 1, (void *) (W83977F | W83977_AMI)); - device_add_inst_params(&w83977_device, 2, (void *) W83977F); - device_add(&stpc_elite_device); - device_add(&sst_flash_29ee020_device); - - return ret; -} - -int -machine_at_pcm5330_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pcm5330/5330_13b.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_SOUTHBRIDGE_IDE, 0, 0, 0, 0); - pci_register_slot(0x0E, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4); - pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4); - device_add(&stpc_serial_device); - device_add_params(&w83977_device, (void *) (W83977F | W83977_370 | W83977_AMI)); - device_add(&stpc_atlas_device); - device_add(&sst_flash_29ee020_device); - - return ret; -} - -int -machine_at_ecs486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ecs486/8810AIO.32J", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&umc_hb4_device); - device_add(&umc_8886f_device); - device_add(&ide_cmd640_pci_legacy_only_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); - device_add(&kbc_ps2_ami_device); - - return ret; -} - -static const device_config_t hot433a_config[] = { - // clang-format off - { - .name = "bios", - .description = "BIOS Version", - .type = CONFIG_BIOS, - .default_string = "hot433a", - .default_int = 0, - .file_filter = "", - .spinner = { 0 }, - .bios = { - { .name = "AMIBIOS 5 (101094) - Revision 433AUS33", .internal_name = "hot433a", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/hot433/433AUS33.ROM", "" } }, - { .name = "AwardBIOS v4.51PG - Revision 2.5 (by eSupport)", .internal_name = "hot433a_v451pg", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/hot433/2A4X5H21.BIN", "" } }, - { .files_no = 0 } - }, - }, - { .name = "", .description = "", .type = CONFIG_END } - // clang-format on -}; - -const device_t hot433a_device = { - .name = "Shuttle HOT-433A", - .internal_name = "hot433a_device", - .flags = 0, - .local = 0, - .init = NULL, - .close = NULL, - .reset = NULL, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = hot433a_config -}; - -int -machine_at_hot433a_init(const machine_t *model) -{ - int ret = 0; - const char* fn; - - /* No ROMs available */ - if (!device_available(model->device)) - return ret; - - device_context(model->device); - int is_award = !strcmp(device_get_config_bios("bios"), "hot433a_award"); - fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); - ret = bios_load_linear(fn, 0x000e0000, 131072, 0); - device_context_restore(); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - if (is_award) - device_add(&amstrad_megapc_nvr_device); - else - device_add(&ami_1994_nvr_device); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); - - device_add(&umc_hb4_device); - device_add(&umc_8886bf_device); - if (is_award) - device_add_params(&um866x_device, (void *) UM8663AF); - else - device_add_params(&um8669f_device, (void *) 0); - device_add(&winbond_flash_w29c010_device); - if (is_award) - device_add(&kbc_ps2_ami_device); - else - device_add(&kbc_at_ami_device); - - pic_toggle_latch(is_award); - - return ret; -} - -int -machine_at_84xxuuda_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/84xxuuda/uud0520s.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&umc_hb4_device); - device_add(&umc_8886bf_device); - device_add_params(&um866x_device, (void *) UM8663BF); - device_add(&winbond_flash_w29c010_device); - device_add(&kbc_ps2_ami_device); - - return ret; -} - -int -machine_at_pl4600c_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pl4600c/SST29EE010.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* Slot 01 */ - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); /* Slot 02 */ - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); /* Onboard */ - pci_register_slot(0x13, PCI_CARD_VIDEO, 0, 0, 0, 0); /* Onboard */ - - - device_add(&umc_hb4_device); - device_add(&umc_8886af_device); - device_add_params(&um866x_device, (void *) UM8663AF); - device_add(&sst_flash_29ee010_device); - device_add(&kbc_ps2_ami_pci_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(&gd5430_onboard_pci_device); - - if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&ess_1688_device); - - if (fdc_current[0] == FDC_INTERNAL){ - fdd_set_turbo(0, 1); - fdd_set_turbo(1, 1); - } - - return ret; -} - -int -machine_at_atc1415_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/atc1415/1415V330.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&umc_hb4_device); - device_add(&umc_8886bf_device); - device_add(&intel_flash_bxt_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_actionpc2600_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/actionpc2600/action2600.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 3); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_VIDEO, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add(&umc_hb4_device); - device_add(&umc_8886bf_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); - device_add(&kbc_ps2_tg_ami_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - return ret; -} - -int -machine_at_actiontower8400_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/actiontower8400/V31C.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x15, PCI_CARD_VIDEO, 0, 0, 0, 0); - pci_register_slot(0x16, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x14, PCI_CARD_NORMAL, 2, 3, 4, 1); - - device_add(&umc_hb4_device); - device_add(&umc_8886f_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&ide_cmd640_pci_device); - device_add(&intel_flash_bxt_device); // The ActionPC 2600 has this so I'm gonna assume this does too. - device_add(&kbc_ps2_ami_pci_device); - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - return ret; -} - -int -machine_at_m919_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/m919/9190914s.rom", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&umc_hb4_device); - device_add(&umc_8886af_device); /* AF is correct - the BIOS does IDE writes to ports 108h and 109h. */ - device_add_params(&um866x_device, (void *) UM8663BF); - device_add(&sst_flash_29ee010_device); - device_add(&kbc_at_ami_device); - - return ret; -} - -int -machine_at_spc7700plw_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/spc7700plw/77LW13FH.P24", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&umc_hb4_device); - device_add(&umc_8886af_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); - device_add(&kbc_ps2_ami_device); - - return ret; -} - -int -machine_at_ms4134_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ms4134/4alm001.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_ide_init(model); - - device_add(&ali1429g_device); - - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - - pci_init(FLAG_MECHANISM_1 | FLAG_MECHANISM_2 | PCI_ALWAYS_EXPOSE_DEV0); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - - pci_register_slot(0x0B, PCI_CARD_SCSI, 4, 1, 2, 3); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); - - device_add(&ali1435_device); - device_add(&sst_flash_29ee010_device); - - device_add(&kbc_ps2_ami_device); - - return ret; -} - -int -machine_at_tg486gp_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tg486gp/tg486gp.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_ide_init(model); - - device_add(&ali1429g_device); - - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - - pci_init(FLAG_MECHANISM_1 | FLAG_MECHANISM_2 | PCI_ALWAYS_EXPOSE_DEV0); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - - pci_register_slot(0x0F, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); - - device_add(&ali1435_device); - device_add(&sst_flash_29ee010_device); - - device_add(&kbc_ps2_tg_ami_device); - - return ret; -} - -int -machine_at_tg486g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tg486g/tg486g.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - device_add(&amstrad_megapc_nvr_device); - device_add(&sis_85c471_device); - device_add(&ide_isa_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_tg_ami_pci_device); - - if (gfxcard[0] != VID_INTERNAL) { - for (uint16_t i = 0; i < 32768; i++) - rom[i] = mem_readb_phys(0x000c0000 + i); - } - mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000); - mem_mapping_set_exec(&bios_mapping, rom); - - return ret; -} - -int -machine_at_dvent4xx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/dvent4xx/Venturis466_BIOS.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&sis_85c471_device); - device_add(&ide_cmd640_vlb_pri_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); - device_add(&kbc_ps2_phoenix_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - return ret; -} - -int -machine_at_ecsal486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ecsal486/ECS_AL486.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&ali1429g_device); - device_add(&kbc_ps2_ami_pci_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_ap4100aa_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ap4100aa/M27C512DIP28.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - device_add(&ami_1994_nvr_device); - device_add(&ali1429g_device); - device_add(&kbc_ps2_ami_pci_device); - device_add(&ide_vlb_device); - device_add_params(&um866x_device, (void *) UM8663BF); - - return ret; -} - -int -machine_at_atc1762_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/atc1762/atc1762.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&ali1429g_device); - device_add(&kbc_ps2_ami_pci_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_dataexpert386wb_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/dataexpert386wb/st0386-wb-ver2-0-618f078c738cb397184464.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&opti391_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_isa486c_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/isa486c/asus-isa-486c-401a0-040591-657e2c17a0218417632602.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&isa486c_device); - device_add(&port_92_key_device); - - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_genoa486_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/genoa486/AMI486.BIO", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&compaq_genoa_device); - device_add(&port_92_key_device); - - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_ga486l_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ga486l/ga-486l_bios.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&opti381_device); - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_cobalt_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/cobalt/Cobalt_2.3.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&opti499_device); - device_add(&ide_opti611_vlb_device); - device_add(&ide_isa_sec_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - - device_add(&kbc_ps2_ami_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - return ret; -} - -int -machine_at_cougar_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/cougar/COUGRMRB.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - device_add(&ide_vlb_device); - - device_add(&opti499_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - - device_add(&kbc_at_ami_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_micronics386_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/micronics386/386-Micronics-09-00021-EVEN.BIN", - "roms/machines/micronics386/386-Micronics-09-00021-ODD.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_init(model); - device_add(&port_92_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} - -int -machine_at_micronics386px_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/micronics386/386-Micronics-09-00021-LO.BIN", - "roms/machines/micronics386/386-Micronics-09-00021-HI.BIN", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_init(model); - device_add(&port_92_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - return ret; -} diff --git a/src/machine/m_at_386sx.c b/src/machine/m_at_386sx.c index d52cd6611..4aed9f0b1 100644 --- a/src/machine/m_at_386sx.c +++ b/src/machine/m_at_386sx.c @@ -62,7 +62,7 @@ machine_at_pc916sx_init(const machine_t *model) machine_at_common_init(model); - device_add(&kbc_at_ncr_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); mem_remap_top(384); if (fdc_current[0] == FDC_INTERNAL) @@ -84,7 +84,7 @@ machine_at_quadt386sx_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -152,7 +152,7 @@ machine_at_pbl300sx_init(const machine_t *model) machine_at_common_init(model); device_add(&acc2036_device); - device_add(&kbc_ps2_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&um866x_device, (void *) (UM82C862F | UM866X_IDE_PRI)); if (gfxcard[0] == VID_INTERNAL) @@ -178,7 +178,8 @@ machine_at_arb1374_init(const machine_t *model) device_add(&ali1217_device); device_add(&ide_isa_device); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0 | W83XX7_IDE_PRI)); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -199,7 +200,8 @@ machine_at_sbc350a_init(const machine_t *model) device_add(&ali1217_device); device_add(&ide_isa_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -224,7 +226,7 @@ machine_at_flytech386_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(&tvga8900d_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -244,7 +246,8 @@ machine_at_325ax_init(const machine_t *model) device_add(&ali1217_device); device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -264,7 +267,8 @@ machine_at_mr1217_init(const machine_t *model) device_add(&ali1217_device); device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -284,6 +288,7 @@ machine_at_acer100t_init(const machine_t *model) machine_at_ps2_ide_init(model); device_add(&ali1409_device); + if (gfxcard[0] == VID_INTERNAL) device_add(&oti077_acer100t_device); @@ -333,7 +338,7 @@ machine_at_adi386sx_init(const machine_t *model) device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */ device_add(&intel_82335_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -356,7 +361,7 @@ machine_at_shuttle386sx_init(const machine_t *model) machine_at_common_init(model); device_add(&intel_82335_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -379,7 +384,7 @@ machine_at_cmdsl386sx16_init(const machine_t *model) machine_at_common_init(model); - device_add(&kbc_ps2_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -429,7 +434,7 @@ machine_at_if386sx_init(const machine_t *model) machine_at_common_init_ex(model, 2); device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */ - device_add(&kbc_at_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&neat_sx_device); @@ -447,6 +452,29 @@ machine_at_if386sx_init(const machine_t *model) return ret; } +/* OPTi 283 */ +int +machine_at_svc386sxp1_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/svc386sxp1/svc-386sx-am27c512dip28-6468c04f09d89320349795.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti283_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + /* OPTi 291 */ int machine_at_awardsx_init(const machine_t *model) @@ -501,10 +529,7 @@ machine_at_scamp_common_init(const machine_t *model, int is_ps2) { machine_at_common_ide_init(model); - if (is_ps2) - device_add(&kbc_ps2_ami_device); - else - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -622,7 +647,7 @@ machine_at_scatsx_init(const machine_t *model) { machine_at_common_init(model); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -664,7 +689,7 @@ machine_at_wd76c10_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(¶dise_wd90c11_megapc_device); - device_add(&kbc_ps2_quadtel_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&wd76c10_device); diff --git a/src/machine/m_at_486_misc.c b/src/machine/m_at_486_misc.c new file mode 100644 index 000000000..9eb8f8d4c --- /dev/null +++ b/src/machine/m_at_486_misc.c @@ -0,0 +1,210 @@ +/* + * 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 486 Miscellaneous machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* STPC Client */ +int +machine_at_itoxstar_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/itoxstar/STARA.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x1F, PCI_CARD_NORMAL, 1, 2, 3, 4); + device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); + device_add(&stpc_client_device); + device_add(&sst_flash_29ee020_device); + device_add(&w83781d_device); /* fans: Chassis, CPU, unused; temperatures: Chassis, CPU, unused */ + hwm_values.fans[2] = 0; /* unused */ + hwm_values.temperatures[2] = 0; /* unused */ + hwm_values.voltages[0] = 0; /* Vcore unused */ + + return ret; +} + +/* STPC Consumer-II */ +int +machine_at_arb1423c_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/arb1423c/A1423C.v12", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x1F, PCI_CARD_NORMAL, 1, 0, 0, 0); + pci_register_slot(0x1E, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x1D, PCI_CARD_NORMAL, 3, 4, 1, 2); + device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); + device_add(&stpc_consumer2_device); + device_add(&winbond_flash_w29c020_device); + + return ret; +} + +int +machine_at_arb1479_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/arb1479/1479A.rom", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x1F, PCI_CARD_NORMAL, 1, 0, 0, 0); + pci_register_slot(0x1E, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x1D, PCI_CARD_NORMAL, 3, 4, 1, 2); + device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); + device_add(&stpc_consumer2_device); + device_add(&winbond_flash_w29c020_device); + + return ret; +} + +int +machine_at_iach488_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/iach488/FH48800B.980", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add_params(&w83977_device, (void *) (W83977F | W83977_AMI)); + device_add(&stpc_consumer2_device); + device_add(&sst_flash_29ee020_device); + + return ret; +} + +/* STPC Elite */ +int +machine_at_pcm9340_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pcm9340/9340v110.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x1D, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x1E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x1F, PCI_CARD_NORMAL, 2, 3, 4, 1); + device_add_inst_params(&w83977_device, 1, (void *) (W83977F | W83977_AMI)); + device_add_inst_params(&w83977_device, 2, (void *) W83977F); + device_add(&stpc_elite_device); + device_add(&sst_flash_29ee020_device); + + return ret; +} + +/* STPC Atlas */ +int +machine_at_pcm5330_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pcm5330/5330_13b.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_SOUTHBRIDGE_IDE, 0, 0, 0, 0); + pci_register_slot(0x0E, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4); + pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4); + device_add(&stpc_serial_device); + device_add_params(&w83977_device, (void *) (W83977F | W83977_370 | W83977_AMI)); + device_add(&stpc_atlas_device); + device_add(&sst_flash_29ee020_device); + + return ret; +} diff --git a/src/machine/m_at_486slc.c b/src/machine/m_at_486slc.c new file mode 100644 index 000000000..156eae16b --- /dev/null +++ b/src/machine/m_at_486slc.c @@ -0,0 +1,72 @@ +/* + * 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 486SLC machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* OPTi 283 */ +int +machine_at_rycleopardlx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/rycleopardlx/486-RYC-Leopard-LX.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti283_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} diff --git a/src/machine/m_at_commodore.c b/src/machine/m_at_commodore.c deleted file mode 100644 index bd4468ae1..000000000 --- a/src/machine/m_at_commodore.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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 the Commodore PC3 system. - * - * - * - * Authors: Fred N. van Kempen, - * Miran Grca, - * Sarah Walker, - * - * Copyright 2017-2018 Fred N. van Kempen. - * Copyright 2016-2018 Miran Grca. - * Copyright 2008-2018 Sarah Walker. - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the: - * - * Free Software Foundation, Inc. - * 59 Temple Place - Suite 330 - * Boston, MA 02111-1307 - * USA. - */ -#include -#include -#include -#include -#include <86box/86box.h> -#include <86box/device.h> -#include <86box/timer.h> -#include <86box/io.h> -#include <86box/mem.h> -#include <86box/fdc_ext.h> -#include <86box/lpt.h> -#include <86box/rom.h> -#include <86box/serial.h> -#include <86box/fdd.h> -#include <86box/fdc.h> -#include <86box/machine.h> -#include <86box/plat_unused.h> - -static serial_t *cmd_uart; -static lpt_t *cmd_lpt; - -static void -cbm_io_write(UNUSED(uint16_t port), uint8_t val, UNUSED(void *priv)) -{ - lpt_port_remove(cmd_lpt); - - switch (val & 3) { - case 1: - lpt_port_setup(cmd_lpt, LPT_MDA_ADDR); - break; - case 2: - lpt_port_setup(cmd_lpt, LPT1_ADDR); - break; - case 3: - lpt_port_setup(cmd_lpt, LPT2_ADDR); - break; - - default: - break; - } - - switch (val & 0xc) { - case 0x4: - serial_setup(cmd_uart, COM2_ADDR, COM2_IRQ); - break; - case 0x8: - serial_setup(cmd_uart, COM1_ADDR, COM1_IRQ); - break; - - default: - break; - } -} - -static void -cbm_io_init(void) -{ - io_sethandler(0x0230, 0x0001, NULL, NULL, NULL, cbm_io_write, NULL, NULL, NULL); -} - -int -machine_at_cmdpc_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/cmdpc30/commodore pc 30 iii even.bin", - "roms/machines/cmdpc30/commodore pc 30 iii odd.bin", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - machine_at_init(model); - - mem_remap_top(384); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - cmd_uart = device_add(&ns8250_device); - serial_set_next_inst(1); - - cmd_lpt = device_add(&lpt_port_device); - lpt_set_next_inst(1); - - cbm_io_init(); - - return ret; -} diff --git a/src/machine/m_at_common.c b/src/machine/m_at_common.c new file mode 100644 index 000000000..9526c7749 --- /dev/null +++ b/src/machine/m_at_common.c @@ -0,0 +1,139 @@ +/* + * 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 the common initialization functions for + * the PC/AT and copatible machines. + * + * Authors: Miran Grca, + * Sarah Walker, + * Jasmine Iwanek, + * Fred N. van Kempen, + * + * Copyright 2016-2025 Miran Grca. + * Copyright 2008-2025 Sarah Walker. + * Copyright 2025 Jasmine Iwanek. + * Copyright 2017-2025 Fred N. van Kempen. + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the: + * + * Free Software Foundation, Inc. + * 59 Temple Place - Suite 330 + * Boston, MA 02111-1307 + * USA. + */ +#include +#include +#include +#include +#include <86box/86box.h> +#include <86box/timer.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/dma.h> +#include <86box/mem.h> +#include <86box/device.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/nvr.h> +#include <86box/gameport.h> +#include <86box/keyboard.h> +#include <86box/lpt.h> +#include <86box/rom.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/machine.h> + +void +machine_at_common_init_ex(const machine_t *model, int type) +{ + machine_common_init(model); + + refresh_at_enable = 1; + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_at); + pic2_init(); + dma16_init(); + + if (!(type & 4)) + device_add(&port_6x_device); + type &= 3; + + if (type == 1) + device_add(&ibmat_nvr_device); + else if (type == 0) + device_add(&at_nvr_device); + + standalone_gameport_type = &gameport_device; +} + +void +machine_at_common_init(const machine_t *model) +{ + machine_at_common_init_ex(model, 0); +} + +void +machine_at_init(const machine_t *model) +{ + machine_at_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); +} + +void +machine_at_ps2_init(const machine_t *model) +{ + machine_at_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); +} + +void +machine_at_common_ide_init(const machine_t *model) +{ + machine_at_common_init(model); + + device_add(&ide_isa_device); +} + +void +machine_at_ibm_common_ide_init(const machine_t *model) +{ + machine_at_common_init_ex(model, 1); + + device_add(&ide_isa_device); +} + +void +machine_at_ide_init(const machine_t *model) +{ + machine_at_init(model); + + device_add(&ide_isa_device); +} + +void +machine_at_ps2_ide_init(const machine_t *model) +{ + machine_at_ps2_init(model); + + device_add(&ide_isa_device); +} + + diff --git a/src/machine/m_at_compaq.c b/src/machine/m_at_compaq.c deleted file mode 100644 index d918dbfc6..000000000 --- a/src/machine/m_at_compaq.c +++ /dev/null @@ -1,251 +0,0 @@ -/* - * 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. - * - * Emulation of various Compaq PC's. - * - * - * - * Authors: Sarah Walker, - * Miran Grca, - * TheCollector1995, - * - * Copyright 2008-2018 Sarah Walker. - * Copyright 2016-2018 Miran Grca. - */ -#include -#include -#include -#include -#include -#include -#include <86box/86box.h> -#include "cpu.h" -#include <86box/io.h> -#include <86box/timer.h> -#include <86box/pit.h> -#include <86box/mem.h> -#include <86box/rom.h> -#include <86box/device.h> -#include <86box/chipset.h> -#include <86box/keyboard.h> -#include <86box/fdd.h> -#include <86box/fdc.h> -#include <86box/fdc_ext.h> -#include <86box/hdc.h> -#include <86box/hdc_ide.h> -#include <86box/machine.h> -#include <86box/video.h> -#include <86box/vid_cga.h> -#include <86box/vid_cga_comp.h> -#include <86box/plat_unused.h> - -enum { - COMPAQ_PORTABLEII = 0, - COMPAQ_PORTABLEIII, - COMPAQ_PORTABLEIII386, - COMPAQ_DESKPRO386, - COMPAQ_DESKPRO386_05_1988 -}; - -static int compaq_machine_type = 0; - -/* Compaq Deskpro 386 remaps RAM from 0xA0000-0xFFFFF to 0xFA0000-0xFFFFFF */ -static mem_mapping_t ram_mapping; - - -static uint8_t -read_ram(uint32_t addr, UNUSED(void *priv)) -{ - addr = (addr & 0x7ffff) + 0x80000; - addreadlookup(mem_logical_addr, addr); - - return (ram[addr]); -} - -static uint16_t -read_ramw(uint32_t addr, UNUSED(void *priv)) -{ - addr = (addr & 0x7ffff) + 0x80000; - addreadlookup(mem_logical_addr, addr); - - return (*(uint16_t *) &ram[addr]); -} - -static uint32_t -read_raml(uint32_t addr, UNUSED(void *priv)) -{ - addr = (addr & 0x7ffff) + 0x80000; - addreadlookup(mem_logical_addr, addr); - - return (*(uint32_t *) &ram[addr]); -} - -static void -write_ram(uint32_t addr, uint8_t val, UNUSED(void *priv)) -{ - addr = (addr & 0x7ffff) + 0x80000; - addwritelookup(mem_logical_addr, addr); - - mem_write_ramb_page(addr, val, &pages[addr >> 12]); -} - -static void -write_ramw(uint32_t addr, uint16_t val, UNUSED(void *priv)) -{ - addr = (addr & 0x7ffff) + 0x80000; - addwritelookup(mem_logical_addr, addr); - - mem_write_ramw_page(addr, val, &pages[addr >> 12]); -} - -static void -write_raml(uint32_t addr, uint32_t val, UNUSED(void *priv)) -{ - addr = (addr & 0x7ffff) + 0x80000; - addwritelookup(mem_logical_addr, addr); - - mem_write_raml_page(addr, val, &pages[addr >> 12]); -} - -static void -machine_at_compaq_init(const machine_t *model, int type) -{ - compaq_machine_type = type; - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - if (type < COMPAQ_PORTABLEIII386) { - mem_remap_top(384); - mem_mapping_add(&ram_mapping, 0xfa0000, 0x60000, - read_ram, read_ramw, read_raml, - write_ram, write_ramw, write_raml, - 0xa0000 + ram, MEM_MAPPING_INTERNAL, NULL); - } - - video_reset(gfxcard[0]); - - switch (type) { - case COMPAQ_PORTABLEII: - machine_at_common_init(model); - device_add(&kbc_at_compaq_device); - break; - - case COMPAQ_PORTABLEIII: - if (hdc_current[0] == HDC_INTERNAL) - device_add(&ide_isa_device); - if (gfxcard[0] == VID_INTERNAL) - device_add(&compaq_plasma_device); - - machine_at_common_init(model); - device_add(&kbc_at_compaq_device); - break; - - case COMPAQ_PORTABLEIII386: - if (hdc_current[0] == HDC_INTERNAL) - device_add(&ide_isa_device); - if (gfxcard[0] == VID_INTERNAL) - device_add(&compaq_plasma_device); - device_add(&compaq_386_device); - machine_at_common_init(model); - device_add(&kbc_at_compaq_device); - break; - - case COMPAQ_DESKPRO386: - case COMPAQ_DESKPRO386_05_1988: - device_add(&compaq_386_device); - machine_at_common_init(model); - device_add(&kbc_at_compaq_device); - break; - - default: - break; - } -} - -int -machine_at_portableii_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleavedr("roms/machines/portableii/109740-001.rom", - "roms/machines/portableii/109739-001.rom", - 0x000f8000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_compaq_init(model, COMPAQ_PORTABLEII); - - return ret; -} - -int -machine_at_portableiii_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linearr("roms/machines/portableiii/K Combined.bin", - 0x000f8000, 65536, 0); - - - if (bios_only || !ret) - return ret; - - machine_at_compaq_init(model, COMPAQ_PORTABLEIII); - - return ret; -} - -int -machine_at_portableiii386_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linearr("roms/machines/portableiii/P.2 Combined.bin", - 0x000f0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_compaq_init(model, COMPAQ_PORTABLEIII386); - - return ret; -} - -int -machine_at_deskpro386_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linearr("roms/machines/deskpro386/1986-09-04-HI.json.bin", - 0x000f8000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_compaq_init(model, COMPAQ_DESKPRO386); - - return ret; -} - -int -machine_at_deskpro386_05_1988_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linearr("roms/machines/deskpro386/1988-05-10.json.bin", - 0x000f8000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_compaq_init(model, COMPAQ_DESKPRO386_05_1988); - - return ret; -} diff --git a/src/machine/m_at_m6117.c b/src/machine/m_at_m6117.c index 9558dacf3..2d8116b12 100644 --- a/src/machine/m_at_m6117.c +++ b/src/machine/m_at_m6117.c @@ -59,7 +59,7 @@ machine_at_pja511m_init(const machine_t *model) device_add_inst_params(&fdc37c669_device, 1, (void *) FDC37C6XX_IDE_PRI); device_add_inst_params(&fdc37c669_device, 2, (void *) 0); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ali6117d_device); device_add(&sst_flash_29ee010_device); @@ -80,7 +80,7 @@ machine_at_prox1332_init(const machine_t *model) machine_at_common_init(model); device_add_params(&fdc37c669_device, (void *) FDC37C6XX_370); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ali6117d_device); device_add(&sst_flash_29ee010_device); diff --git a/src/machine/m_at_misc.c b/src/machine/m_at_misc.c index ad26f56e5..268cf7f7d 100644 --- a/src/machine/m_at_misc.c +++ b/src/machine/m_at_misc.c @@ -8,11 +8,9 @@ * * Implementation of Miscellaneous, Fake, Hypervisor machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include diff --git a/src/machine/m_at_slot1.c b/src/machine/m_at_slot1.c index 9c4875094..12fd9861f 100644 --- a/src/machine/m_at_slot1.c +++ b/src/machine/m_at_slot1.c @@ -8,11 +8,9 @@ * * Implementation of Slot 1 machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -40,6 +38,39 @@ #include <86box/clock.h> #include <86box/snd_ac97.h> +/* ALi ALADDiN-PRO II */ +int +machine_at_m729_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/m729/M729NEW.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE_IDE, 1, 2, 3, 4); + pci_register_slot(0x03, PCI_CARD_SOUTHBRIDGE_PMU, 1, 2, 3, 4); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x10, PCI_CARD_NORMAL, 3, 4, 1, 2); + device_add(&ali1621_device); + device_add(&ali1543c_device); /* +0 */ + device_add(&winbond_flash_w29c010_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 512); + + return ret; +} + +/* i440FX */ int machine_at_acerv62x_init(const machine_t *model) { @@ -109,7 +140,7 @@ machine_at_kn97_init(const machine_t *model) pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i440fx_device); device_add(&piix3_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&intel_flash_bxt_device); device_add(&lm78_device); /* fans: Chassis, CPU, Power; temperature: MB */ @@ -119,6 +150,7 @@ machine_at_kn97_init(const machine_t *model) return ret; } +/* i440LX */ int machine_at_lx6_init(const machine_t *model) { @@ -250,6 +282,7 @@ machine_at_ma30d_init(const machine_t *model) return ret; } +/* i440EX */ int machine_at_p6i440e2_init(const machine_t *model) { @@ -281,109 +314,7 @@ machine_at_p6i440e2_init(const machine_t *model) return ret; } -int -machine_at_p2bls_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p2bls/1014ls.003", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x04, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x06, PCI_CARD_SCSI, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_NETWORK, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440bx_device); - device_add(&piix4e_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); -#if 0 - device_add(ics9xxx_get(ICS9150_08)); /* setting proper speeds requires some interaction with the AS97127F ASIC */ -#endif - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0xF, 256); - device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */ - hwm_values.temperatures[1] = 0; /* unused */ - hwm_values.temperatures[2] -= 3; /* CPU offset */ - - return ret; -} - -int -machine_at_lgibmx7g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/lgibmx7g/ms6119.331", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440bx_device); - device_add(&piix4e_device); - device_add_params(&w83977_device, (void *) (W83977TF | W83977_AMI | W83977_NO_NVR)); - device_add(&winbond_flash_w29c020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - - return ret; -} - -int -machine_at_p3bf_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p3bf/1008f.004", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x04, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440bx_device); - device_add(&piix4e_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(ics9xxx_get(ICS9250_08)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0xF, 256); - device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */ - hwm_values.voltages[4] = hwm_values.voltages[5]; /* +12V reading not in line with other boards; appears to be close to the -12V reading */ - - return ret; -} - +/* i440BX */ int machine_at_bf6_init(const machine_t *model) { @@ -447,6 +378,79 @@ machine_at_bx6_init(const machine_t *model) return ret; } +int +machine_at_p2bls_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p2bls/1014ls.003", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x04, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x06, PCI_CARD_SCSI, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_NETWORK, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440bx_device); + device_add(&piix4e_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); +#if 0 + device_add(ics9xxx_get(ICS9150_08)); /* setting proper speeds requires some interaction with the AS97127F ASIC */ +#endif + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0xF, 256); + device_add(&w83781d_device); /* fans: Chassis, CPU, Power; temperatures: MB, unused, CPU */ + hwm_values.temperatures[1] = 0; /* unused */ + hwm_values.temperatures[2] -= 3; /* CPU offset */ + + return ret; +} + +int +machine_at_p3bf_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p3bf/1008f.004", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x04, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440bx_device); + device_add(&piix4e_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(ics9xxx_get(ICS9250_08)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0xF, 256); + device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */ + hwm_values.voltages[4] = hwm_values.voltages[5]; /* +12V reading not in line with other boards; appears to be close to the -12V reading */ + + return ret; +} + int machine_at_ax6bc_init(const machine_t *model) { @@ -479,36 +483,6 @@ machine_at_ax6bc_init(const machine_t *model) return ret; } -int -machine_at_atc6310bxii_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/atc6310bxii/6310s102.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440bx_device); - device_add(&slc90e66_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - - return ret; -} - int machine_at_686bx_init(const machine_t *model) { @@ -545,6 +519,36 @@ machine_at_686bx_init(const machine_t *model) return ret; } +int +machine_at_lgibmx7g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/lgibmx7g/ms6119.331", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440bx_device); + device_add(&piix4e_device); + device_add_params(&w83977_device, (void *) (W83977TF | W83977_AMI | W83977_NO_NVR)); + device_add(&winbond_flash_w29c020_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + return ret; +} + int machine_at_p6sba_init(const machine_t *model) { @@ -619,6 +623,131 @@ machine_at_s1846_init(const machine_t *model) return ret; } +/* i440ZX */ +int +machine_at_vei8_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/vei8/QHW1001.BIN", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440zx_device); + device_add(&piix4e_device); + device_add_params(&fdc37m60x_device, (void *) (FDC37XXX2 | FDC37XXXX_370)); + device_add(ics9xxx_get(ICS9250_08)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 512); + device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */ + + return ret; +} + +static void +machine_at_ms6168_common_init(const machine_t *model) +{ + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x14, PCI_CARD_SOUND, 3, 4, 1, 2); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440zx_device); + device_add(&piix4e_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&voodoo_3_2000_agp_onboard_8m_device); + + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 256); + + if (sound_card_current[0] == SOUND_INTERNAL) { + device_add(machine_get_snd_device(machine)); + device_add(&cs4297_device); + } +} + +int +machine_at_ms6168_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ms6168/w6168ims.130", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ms6168_common_init(model); + + return ret; +} + +int +machine_at_borapro_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/borapro/MS6168V2.50", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ms6168_common_init(model); + + return ret; +} + +/* SMSC VictoryBX-66 */ +int +machine_at_atc6310bxii_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/atc6310bxii/6310s102.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440bx_device); + device_add(&slc90e66_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + return ret; +} + +/* VIA Apollo Pro */ int machine_at_ficka6130_init(const machine_t *model) { @@ -643,13 +772,13 @@ machine_at_ficka6130_init(const machine_t *model) device_add(&via_apro_device); device_add(&via_vt82c596a_device); device_add_params(&w83877_device, (void *) (W83877TF | W83877_3F0)); - device_add(&kbc_ps2_ami_pci_device); device_add(&sst_flash_29ee020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); return ret; } +/* VIA Apollo Pro 133 */ int machine_at_p3v133_init(const machine_t *model) { @@ -686,6 +815,7 @@ machine_at_p3v133_init(const machine_t *model) return ret; } +/* VIA Apollo Pro 133A */ int machine_at_p3v4x_init(const machine_t *model) { @@ -761,129 +891,7 @@ machine_at_gt694va_init(const machine_t *model) return ret; } -int -machine_at_vei8_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/vei8/QHW1001.BIN", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440zx_device); - device_add(&piix4e_device); - device_add_params(&fdc37m60x_device, (void *) (FDC37XXX2 | FDC37XXXX_370)); - device_add(ics9xxx_get(ICS9250_08)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 512); - device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */ - - return ret; -} - -static void -machine_at_ms6168_common_init(const machine_t *model) -{ - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x14, PCI_CARD_SOUND, 3, 4, 1, 2); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440zx_device); - device_add(&piix4e_device); - - if (gfxcard[0] == VID_INTERNAL) - device_add(&voodoo_3_2000_agp_onboard_8m_device); - - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&intel_flash_bxt_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); - - if (sound_card_current[0] == SOUND_INTERNAL) { - device_add(machine_get_snd_device(machine)); - device_add(&cs4297_device); - } -} - -int -machine_at_borapro_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/borapro/MS6168V2.50", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ms6168_common_init(model); - - return ret; -} - -int -machine_at_ms6168_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ms6168/w6168ims.130", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_ms6168_common_init(model); - - return ret; -} - -int -machine_at_m729_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/m729/M729NEW.BIN", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE_IDE, 1, 2, 3, 4); - pci_register_slot(0x03, PCI_CARD_SOUTHBRIDGE_PMU, 1, 2, 3, 4); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x10, PCI_CARD_NORMAL, 3, 4, 1, 2); - device_add(&ali1621_device); - device_add(&ali1543c_device); /* +0 */ - device_add(&winbond_flash_w29c010_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 512); - - return ret; -} - +/* SiS 5600 */ int machine_at_p6f99_init(const machine_t *model) { @@ -907,7 +915,6 @@ machine_at_p6f99_init(const machine_t *model) pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x02, PCI_CARD_AGPBRIDGE, 0, 0, 0, 0); device_add(&sis_5600_device); - device_add(&kbc_ps2_ami_pci_device); device_add(&it8661f_device); device_add(&winbond_flash_w29c020_device); @@ -940,7 +947,6 @@ machine_at_m747_init(const machine_t *model) pci_register_slot(0x0D, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x02, PCI_CARD_AGPBRIDGE, 0, 0, 0, 0); device_add(&sis_5600_device); - device_add(&kbc_ps2_ami_pci_device); device_add(&it8661f_device); device_add(&winbond_flash_w29c020_device); diff --git a/src/machine/m_at_slot1_2.c b/src/machine/m_at_slot1_2.c new file mode 100644 index 000000000..2c8151abe --- /dev/null +++ b/src/machine/m_at_slot1_2.c @@ -0,0 +1,78 @@ +/* + * 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 Slot 1/2 machines. + * + * Slot 2 is quite a rare type of Slot. Used mostly by Pentium + * II and III Xeons. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#include <86box/86box.h> +#include <86box/mem.h> +#include <86box/io.h> +#include <86box/rom.h> +#include <86box/pci.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/hdc.h> +#include <86box/hdc_ide.h> +#include <86box/keyboard.h> +#include <86box/flash.h> +#include <86box/sio.h> +#include <86box/hwm.h> +#include <86box/spd.h> +#include <86box/video.h> +#include <86box/clock.h> +#include "cpu.h" +#include <86box/machine.h> + +/* i440GX */ +int +machine_at_fw6400gx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/fw6400gx/FWGX1211.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 0, 0); + + device_add(&i440gx_device); + device_add(&piix4e_device); + device_add_params(&pc87309_device, (void *) (PCX730X_15C | PCX730X_AMI | PC87309_PC87309)); + device_add(ics9xxx_get(ICS9250_08)); + device_add(&sst_flash_29ee020_device); + spd_register(SPD_TYPE_SDRAM, 0xF, 512); + device_add(&w83781d_device); /* fans: Chassis, Power, CPU; temperatures: System, CPU, unused */ + hwm_values.temperatures[3] = 0; /* unused */ + hwm_values.voltages[1] = 1500; /* Vtt */ + + return ret; +} diff --git a/src/machine/m_at_slot1_socket370.c b/src/machine/m_at_slot1_socket370.c new file mode 100644 index 000000000..c52885965 --- /dev/null +++ b/src/machine/m_at_slot1_socket370.c @@ -0,0 +1,151 @@ +/* + * 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 Slot 1/Socket 370 machines machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#include <86box/86box.h> +#include <86box/mem.h> +#include <86box/io.h> +#include <86box/rom.h> +#include <86box/pci.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/hdc.h> +#include <86box/hdc_ide.h> +#include <86box/keyboard.h> +#include <86box/flash.h> +#include <86box/sio.h> +#include <86box/hwm.h> +#include <86box/spd.h> +#include <86box/video.h> +#include "cpu.h" +#include <86box/machine.h> +#include <86box/clock.h> +#include <86box/sound.h> +#include <86box/snd_ac97.h> + +/* i440BX */ +int +machine_at_prosignias31x_bx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/prosignias31x_bx/p6bxt-ap-092600.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0d, PCI_CARD_SOUND, 4, 3, 2, 1); /* assumed */ + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440bx_device); + device_add(&piix4e_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&winbond_flash_w29c020_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + device_add(&gl520sm_2d_device); /* fans: CPU, Chassis; temperature: System */ + hwm_values.temperatures[0] += 2; /* System offset */ + hwm_values.temperatures[1] += 2; /* CPU offset */ + hwm_values.voltages[0] = 3300; /* Vcore and 3.3V are swapped */ + hwm_values.voltages[2] = hwm_get_vcore(); + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(&cmi8738_onboard_device); + + return ret; +} + +int +machine_at_s1857_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/s1857/BX57200A.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_SOUND, 1, 0, 0, 0); + pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x11, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440bx_device); + device_add(&piix4e_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + if (sound_card_current[0] == SOUND_INTERNAL) { + device_add(machine_get_snd_device(machine)); + device_add(&cs4297_device); /* no good pictures, but the marking looks like CS4297 from a distance */ + } + + return ret; +} + +/* VIA Apollo Pro 133 */ +int +machine_at_p6bat_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p6bat/bata+56.BIN", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0d, PCI_CARD_NORMAL, 4, 3, 2, 1); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&via_apro133_device); + device_add(&via_vt82c596b_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(&cmi8738_onboard_device); + + return ret; +} diff --git a/src/machine/m_at_slot2.c b/src/machine/m_at_slot2.c index 461ad925a..20b5f05f7 100644 --- a/src/machine/m_at_slot2.c +++ b/src/machine/m_at_slot2.c @@ -10,11 +10,9 @@ * * Slot 2 is quite a rare type of Slot. Used mostly by Pentium II & III Xeons * - * - * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -40,6 +38,7 @@ #include "cpu.h" #include <86box/machine.h> +/* i440GX */ int machine_at_6gxu_init(const machine_t *model) { @@ -111,40 +110,3 @@ machine_at_s2dge_init(const machine_t *model) return ret; } - -int -machine_at_fw6400gx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/fw6400gx/FWGX1211.ROM", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 0, 0); - - device_add(&i440gx_device); - device_add(&piix4e_device); - device_add_params(&pc87309_device, (void *) (PCX730X_15C | PCX730X_AMI | PC87309_PC87309)); - device_add(ics9xxx_get(ICS9250_08)); - device_add(&sst_flash_29ee020_device); - spd_register(SPD_TYPE_SDRAM, 0xF, 512); - device_add(&w83781d_device); /* fans: Chassis, Power, CPU; temperatures: System, CPU, unused */ - hwm_values.temperatures[3] = 0; /* unused */ - hwm_values.voltages[1] = 1500; /* Vtt */ - - return ret; -} diff --git a/src/machine/m_at_socket1.c b/src/machine/m_at_socket1.c new file mode 100644 index 000000000..4357a1b42 --- /dev/null +++ b/src/machine/m_at_socket1.c @@ -0,0 +1,428 @@ +/* + * 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 Socket 168 and 1 machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* CS4031 */ +int +machine_at_cs4031_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/cs4031/CHIPS_1.AMI", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&cs4031_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* OPTi 381 */ +int +machine_at_ga486l_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ga486l/ga-486l_bios.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti381_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* OPTi 493 */ +int +machine_at_svc486wb_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/svc486wb/svc486wb-AM27C512DIP28.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti493_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&ide_isa_device); + + return ret; +} + +/* OPTi 498 */ +int +machine_at_mvi486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/mvi486/MVI627.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti498_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ide_isa_device); + device_add_params(&pc873xx_device, (void *) (PCX73XX_IDE_PRI | PCX730X_398)); + + return ret; +} + +/* SiS 401 */ +static void +machine_at_sis401_common_init(const machine_t *model) +{ + machine_at_common_init(model); + + device_add(&sis_85c401_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); +} + +int +machine_at_isa486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/isa486/ISA-486.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis401_common_init(model); + + return ret; +} + +int +machine_at_sis401_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/sis401/SIS401-2.AMI", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis401_common_init(model); + + return ret; +} + +/* SiS 460 */ +int +machine_at_av4_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/av4/amibios_486dx_isa_bios_aa4025963.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&sis_85c460_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* SiS 471 */ +int +machine_at_advantage40xxd_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/advantage40xxd/AST101.09A", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&sis_85c471_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&um866x_device, (void *) (UM82C863F | UM866X_IDE_PRI)); + + device_add(&intel_flash_bxt_device); + + return ret; +} + +/* Symphony SL42C460 */ +int +machine_at_dtk461_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/dtk461/DTK.BIO", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&sl82c461_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* VIA VT82C495 */ +int +machine_at_486vchd_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486vchd/486-4386-VC-HD.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&via_vt82c49x_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* VLSI 82C480 */ +int +machine_at_vect486vl_init(const machine_t *model) // has HDC problems +{ + int ret; + + ret = bios_load_linear("roms/machines/vect486vl/aa0500.ami", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + machine_at_common_init_ex(model, 2); + + device_add(&vl82c480_device); + + device_add(&vl82c113_device); + + device_add(&ide_isa_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); + + return ret; +} + +/* VLSI 82C481 */ +int +machine_at_d824_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/d824/fts-biosupdated824noflashbiosepromv320-320334-160.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + machine_at_common_init_ex(model, 2); + + device_add(&vl82c480_device); + + /* + Technically, it should be the VL82C114 but we do not have + a proper datasheet of it that tells us the registers. + */ + device_add(&vl82c113_device); + + device_add(&ide_isa_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C651); + + return ret; +} + +/* VLSI 82C486 */ +int +machine_at_tuliptc38_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tuliptc38/TULIP1.BIN", + 0x000f0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + device_add(&vl82c486_device); + device_add(&tulip_jumper_device); + + device_add(&vl82c113_device); + + device_add(&ide_isa_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); + + if (gfxcard[0] == VID_INTERNAL) { + bios_load_aux_linear("roms/machines/tuliptc38/VBIOS.BIN", + 0x000c0000, 32768, 0); + + device_add(machine_get_vid_device(machine)); + } else for (uint16_t i = 0; i < 32768; i++) + rom[i] = mem_readb_phys(0x000c0000 + i); + + mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000); + mem_mapping_set_exec(&bios_mapping, rom); + + return ret; +} + +/* ZyMOS Poach */ +int +machine_at_isa486c_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/isa486c/asus-isa-486c-401a0-040591-657e2c17a0218417632602.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&isa486c_device); + device_add(&port_92_key_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_genoa486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/genoa486/AMI486.BIO", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&compaq_genoa_device); + device_add(&port_92_key_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} diff --git a/src/machine/m_at_socket2.c b/src/machine/m_at_socket2.c new file mode 100644 index 000000000..6c24070ba --- /dev/null +++ b/src/machine/m_at_socket2.c @@ -0,0 +1,379 @@ +/* + * 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 Socket 2 machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* ACC 2168 */ +int +machine_at_pb410a_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pb410a/pb410a.080337.4abf.u25.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ibm_common_ide_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&acc3221_device); + device_add(&acc2168_device); + + device_add(&phoenix_486_jumper_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + return ret; +} + +/* ALi M1429G */ +int +machine_at_acera1g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/acera1g/4alo001.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&ali1429g_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&gd5428_onboard_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add_params(&pc87310_device, (void *) (PC87310_ALI)); + device_add(&ide_ali5213_device); + + return ret; +} + +static void +machine_at_ali1429_common_init(const machine_t *model, int is_green) +{ + machine_at_common_init(model); + + if (is_green) + device_add(&ali1429g_device); + else + device_add(&ali1429_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); +} + +int +machine_at_winbios1429_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/win486/ali1429g.amw", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ali1429_common_init(model, 1); + + return ret; +} + +int +machine_at_ali1429_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ali1429/ami486.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_ali1429_common_init(model, 0); + + return ret; +} + +/* i420TX */ +int +machine_at_pci400ca_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pci400ca/486-AA008851.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SCSI, 1, 2, 3, 4); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sio_device); + + device_add(&intel_flash_bxt_ami_device); + + device_add(&i420tx_device); + device_add(&ncr53c810_onboard_pci_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* IMS 8848 */ +int +machine_at_g486ip_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/g486ip/G486IP.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + device_add(&ami_1992_nvr_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 03 = Slot 1 */ + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 05 = Slot 3 */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ims8848_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* OPTi 499 */ +int +machine_at_cobalt_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/cobalt/Cobalt_2.3.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&opti499_device); + device_add(&ide_opti611_vlb_device); + device_add(&ide_isa_sec_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + return ret; +} + +int +machine_at_cougar_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/cougar/COUGRMRB.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&ide_vlb_device); + + device_add(&opti499_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* SiS 461 */ +int +machine_at_decpclpv_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/decpclpv/bios.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&sis_85c461_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ide_isa_2ch_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C663 | FDC37C6XX_IDE_PRI)); + + return ret; +} + +int +machine_at_dell466np_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/dell466np/466np.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&sis_85c461_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + else { + for (uint16_t i = 0; i < 32768; i++) + rom[i] = mem_readb_phys(0x000c0000 + i); + } + mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000); + mem_mapping_set_exec(&bios_mapping, rom); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ide_isa_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C661 | FDC37C6XX_IDE_PRI)); + + return ret; +} + +int +machine_at_valuepoint433_init(const machine_t *model) // hangs without the PS/2 mouse +{ + int ret; + + ret = bios_load_linear("roms/machines/valuepoint433/$IMAGEP.FLH", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_ide_init(model); + device_add(&sis_85c461_device); + if (gfxcard[0] == VID_INTERNAL) + device_add(&et4000w32_onboard_device); + + device_add_params(&fdc37c6xx_device, (void *) (FDC37C661 | FDC37C6XX_IDE_PRI)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* VLSI 82C480 */ +int +machine_at_martin_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/martin/NONSCSI.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + device_add(&vl82c480_device); + device_add(&vl82c113_device); + + device_add(&ide_vlb_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); + + device_add(&intel_flash_bxt_device); + + return ret; +} diff --git a/src/machine/m_at_socket3.c b/src/machine/m_at_socket3.c new file mode 100644 index 000000000..1d46ebe18 --- /dev/null +++ b/src/machine/m_at_socket3.c @@ -0,0 +1,434 @@ +/* + * 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 Socket 3 machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* ALi M1429G */ +int +machine_at_atc1762_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/atc1762/atc1762.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&ali1429g_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_ecsal486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ecsal486/ECS_AL486.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&ali1429g_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_ap4100aa_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ap4100aa/M27C512DIP28.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + device_add(&ami_1994_nvr_device); + device_add(&ali1429g_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ide_vlb_device); + device_add_params(&um866x_device, (void *) UM8663BF); + + return ret; +} + +/* Contaq 82C596A */ +int +machine_at_4gpv5_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/4gpv5/4GPV5.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add(&contaq_82c596a_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +/* Contaq 82C597 */ +int +machine_at_greenb_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/greenb/4gpv31-ami-1993-8273517.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add(&contaq_82c597_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +/* OPTi 895 */ +static void +machine_at_403tg_common_init(const machine_t *model, int nvr_hack) +{ + if (nvr_hack) { + machine_at_common_init_ex(model, 2); + device_add(&ami_1994_nvr_device); + } else + machine_at_common_init(model); + + device_add(&opti895_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); +} + +int +machine_at_403tg_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/403tg/403TG.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_403tg_common_init(model, 0); + + return ret; +} + +int +machine_at_403tg_d_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/403tg_d/J403TGRevD.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_403tg_common_init(model, 1); + + return ret; +} + +int +machine_at_403tg_d_mr_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/403tg_d/MRBiosOPT895.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_403tg_common_init(model, 0); + + return ret; +} + +/* SiS 461 */ +int +machine_at_acerv10_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/acerv10/ALL.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + device_add(&sis_85c461_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ide_isa_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* SiS 471 */ +static void +machine_at_sis_85c471_common_init(const machine_t *model) +{ + machine_at_common_init(model); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add(&sis_85c471_device); +} + +int +machine_at_win471_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/win471/486-SiS_AC0360136.BIN", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis_85c471_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_vi15g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/vi15g/vi15gr23.rom", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis_85c471_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_vli486sv2g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/vli486sv2g/0402.001", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis_85c471_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_dvent4xx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/dvent4xx/Venturis466_BIOS.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&sis_85c471_device); + device_add(&ide_cmd640_vlb_pri_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + return ret; +} + +int +machine_at_dtk486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/dtk486/4siw005.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis_85c471_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_ami471_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ami471/SIS471BE.AMI", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis_85c471_common_init(model); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_px471_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/px471/SIS471A1.PHO", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_at_sis_85c471_common_init(model); + + device_add(&ide_vlb_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_tg486g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tg486g/tg486g.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + device_add(&amstrad_megapc_nvr_device); + device_add(&sis_85c471_device); + device_add(&ide_isa_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (gfxcard[0] != VID_INTERNAL) { + for (uint16_t i = 0; i < 32768; i++) + rom[i] = mem_readb_phys(0x000c0000 + i); + } + mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000); + mem_mapping_set_exec(&bios_mapping, rom); + + return ret; +} diff --git a/src/machine/m_at_socket370.c b/src/machine/m_at_socket370.c index de07d8c41..1094e59f5 100644 --- a/src/machine/m_at_socket370.c +++ b/src/machine/m_at_socket370.c @@ -6,13 +6,11 @@ * * This file is part of the 86Box distribution. * - * Implementation of Socket 370(PGA370) machines. - * - * + * Implementation of Socket 370 (PGA370) machines. * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -40,6 +38,7 @@ #include <86box/sound.h> #include <86box/snd_ac97.h> +/* i440LX */ int machine_at_s370slm_init(const machine_t *model) { @@ -73,12 +72,13 @@ machine_at_s370slm_init(const machine_t *model) return ret; } +/* i440BX */ int -machine_at_prosignias31x_bx_init(const machine_t *model) +machine_at_awo671r_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/prosignias31x_bx/p6bxt-ap-092600.bin", + ret = bios_load_linear("roms/machines/awo671r/a08139c.bin", 0x000c0000, 262144, 0); if (bios_only || !ret) @@ -89,35 +89,30 @@ machine_at_prosignias31x_bx_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0d, PCI_CARD_SOUND, 4, 3, 2, 1); /* assumed */ - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0D, PCI_CARD_VIDEO, 2, 3, 4, 1); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); device_add(&i440bx_device); device_add(&piix4e_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&winbond_flash_w29c020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - device_add(&gl520sm_2d_device); /* fans: CPU, Chassis; temperature: System */ - hwm_values.temperatures[0] += 2; /* System offset */ - hwm_values.temperatures[1] += 2; /* CPU offset */ - hwm_values.voltages[0] = 3300; /* Vcore and 3.3V are swapped */ - hwm_values.voltages[2] = hwm_get_vcore(); - - if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&cmi8738_onboard_device); + device_add_inst_params(&w83977_device, 1, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add_inst_params(&w83977_device, 2, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&sst_flash_39sf020_device); + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + spd_register(SPD_TYPE_SDRAM, 0x3, 256); return ret; } int -machine_at_s1857_init(const machine_t *model) +machine_at_ambx133_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/s1857/BX57200A.ROM", + ret = bios_load_linear("roms/machines/ambx133/mkbx2vg2.bin", 0x000c0000, 262144, 0); if (bios_only || !ret) @@ -128,91 +123,21 @@ machine_at_s1857_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_SOUND, 1, 0, 0, 0); - pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x11, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); device_add(&i440bx_device); device_add(&piix4e_device); device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&intel_flash_bxt_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - - if (sound_card_current[0] == SOUND_INTERNAL) { - device_add(machine_get_snd_device(machine)); - device_add(&cs4297_device); /* no good pictures, but the marking looks like CS4297 from a distance */ - } - - return ret; -} - -int -machine_at_p6bap_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p6bap/bapa14a.BIN", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0d, PCI_CARD_NORMAL, 4, 3, 2, 1); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&via_apro133a_device); /* Rebranded as ET82C693A */ - device_add(&via_vt82c596b_device); /* Rebranded as ET82C696B */ - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); - - if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&cmi8738_onboard_device); - - return ret; -} - -int -machine_at_p6bat_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p6bat/bata+56.BIN", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0d, PCI_CARD_NORMAL, 4, 3, 2, 1); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&via_apro133_device); - device_add(&via_vt82c596b_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - - if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&cmi8738_onboard_device); + device_add(&gl518sm_2d_device); /* fans: CPUFAN1, CPUFAN2; temperature: CPU */ + hwm_values.fans[1] += 500; + hwm_values.temperatures[0] += 4; /* CPU offset */ + hwm_values.voltages[1] = RESISTOR_DIVIDER(12000, 10, 2); /* different 12V divider in BIOS (10K/2K?) */ return ret; } @@ -253,6 +178,39 @@ machine_at_cubx_init(const machine_t *model) return ret; } +/* i440ZX */ +int +machine_at_63a1_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/63a1/63a-q3.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* Integrated Sound? */ + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&i440zx_device); + device_add(&piix4e_device); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 256); + + return ret; +} + +/* SMSC VictoryBX-66 */ int machine_at_atc7020bxii_init(const machine_t *model) { @@ -308,7 +266,6 @@ machine_at_m773_init(const machine_t *model) pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); device_add(&i440bx_device); device_add(&slc90e66_device); - device_add(&kbc_ps2_ami_pci_device); device_add(&it8671f_device); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x3, 256); @@ -324,106 +281,7 @@ machine_at_m773_init(const machine_t *model) return ret; } -int -machine_at_ambx133_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ambx133/mkbx2vg2.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440bx_device); - device_add(&piix4e_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - device_add(&gl518sm_2d_device); /* fans: CPUFAN1, CPUFAN2; temperature: CPU */ - hwm_values.fans[1] += 500; - hwm_values.temperatures[0] += 4; /* CPU offset */ - hwm_values.voltages[1] = RESISTOR_DIVIDER(12000, 10, 2); /* different 12V divider in BIOS (10K/2K?) */ - - return ret; -} - -int -machine_at_awo671r_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/awo671r/a08139c.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0D, PCI_CARD_VIDEO, 2, 3, 4, 1); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440bx_device); - device_add(&piix4e_device); - device_add_inst_params(&w83977_device, 1, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add_inst_params(&w83977_device, 2, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&sst_flash_39sf020_device); - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); - - return ret; -} - -int -machine_at_63a1_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/63a1/63a-q3.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* Integrated Sound? */ - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&i440zx_device); - device_add(&piix4e_device); - device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); - device_add(&intel_flash_bxt_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); - - return ret; -} - +/* VIA Apollo Pro */ int machine_at_apas3_init(const machine_t *model) { @@ -448,13 +306,85 @@ machine_at_apas3_init(const machine_t *model) device_add(&via_apro_device); device_add(&via_vt82c586b_device); device_add_params(&fdc37c669_device, (void *) 0); - device_add(&kbc_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); return ret; } +/* VIA Apollo Pro 133 */ +int +machine_at_p6bap_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p6bap/bapa14a.BIN", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0d, PCI_CARD_NORMAL, 4, 3, 2, 1); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&via_apro133a_device); /* Rebranded as ET82C693A */ + device_add(&via_vt82c596b_device); /* Rebranded as ET82C696B */ + device_add_params(&w83977_device, (void *) (W83977EF | W83977_AMI | W83977_NO_NVR)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(&cmi8738_onboard_device); + + return ret; +} + +/* VIA Apollo Pro 133A */ +int +machine_at_6via90ap_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/6via90ap/90ap10.bin", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); + device_add(&via_apro133a_device); + device_add(&via_vt82c686b_device); /* fans: CPU1, CPU2; temperatures: CPU, System, unused */ + device_add(ics9xxx_get(ICS9250_18)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 1024); + hwm_values.temperatures[0] += 2; /* CPU offset */ + hwm_values.temperatures[1] += 2; /* System offset */ + hwm_values.temperatures[2] = 0; /* unused */ + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */ + + return ret; +} + int machine_at_cuv4xls_init(const machine_t *model) { @@ -482,7 +412,6 @@ machine_at_cuv4xls_init(const machine_t *model) pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); device_add(&via_apro133a_device); device_add(&via_vt82c686b_device); - device_add(&kbc_ps2_ami_pci_device); device_add(ics9xxx_get(ICS9250_18)); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0xF, 1024); @@ -494,44 +423,7 @@ machine_at_cuv4xls_init(const machine_t *model) return ret; } -int -machine_at_6via90ap_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/6via90ap/90ap10.bin", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&via_apro133a_device); - device_add(&via_vt82c686b_device); /* fans: CPU1, CPU2; temperatures: CPU, System, unused */ - device_add(&kbc_ps2_ami_pci_device); - device_add(ics9xxx_get(ICS9250_18)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 1024); - hwm_values.temperatures[0] += 2; /* CPU offset */ - hwm_values.temperatures[1] += 2; /* System offset */ - hwm_values.temperatures[2] = 0; /* unused */ - - if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */ - - return ret; -} - +/* SiS 600 */ int machine_at_7sbb_init(const machine_t *model) { @@ -553,7 +445,6 @@ machine_at_7sbb_init(const machine_t *model) pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x02, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); device_add(&sis_5600_device); - device_add(&kbc_ps2_ami_pci_device); device_add(&it8661f_device); device_add(&sst_flash_29ee020_device); /* assumed */ diff --git a/src/machine/m_at_socket3_pci.c b/src/machine/m_at_socket3_pci.c new file mode 100644 index 000000000..54f8690ae --- /dev/null +++ b/src/machine/m_at_socket3_pci.c @@ -0,0 +1,1471 @@ +/* + * 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 Socket 3 PCI machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include "cpu.h" +#include <86box/timer.h> +#include <86box/io.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/keyboard.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/dma.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/fdc_ext.h> +#include <86box/gameport.h> +#include <86box/pic.h> +#include <86box/pit.h> +#include <86box/rom.h> +#include <86box/sio.h> +#include <86box/hdc.h> +#include <86box/port_6x.h> +#include <86box/port_92.h> +#include <86box/video.h> +#include <86box/flash.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/hwm.h> +#include <86box/machine.h> +#include <86box/plat_unused.h> +#include <86box/sound.h> + +/* ALi M1429G */ +int +machine_at_ms4134_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ms4134/4alm001.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_ide_init(model); + + device_add(&ali1429g_device); + + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); + + pci_init(FLAG_MECHANISM_1 | FLAG_MECHANISM_2 | PCI_ALWAYS_EXPOSE_DEV0); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + + pci_register_slot(0x0B, PCI_CARD_SCSI, 4, 1, 2, 3); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); + + device_add(&ali1435_device); + device_add(&sst_flash_29ee010_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_tg486gp_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tg486gp/tg486gp.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_ide_init(model); + + device_add(&ali1429g_device); + + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); + + pci_init(FLAG_MECHANISM_1 | FLAG_MECHANISM_2 | PCI_ALWAYS_EXPOSE_DEV0); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + + pci_register_slot(0x0F, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); + + device_add(&ali1435_device); + device_add(&sst_flash_29ee010_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +/* ALi M1489 */ +int +machine_at_sbc490_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/sbc490/07159589.rom", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x01, PCI_CARD_VIDEO, 4, 1, 2, 3); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add(&ali1489_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_abpb4_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/abpb4/486-AB-PB4.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CAN_SWITCH_TYPE); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&ali1489_device); + device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_arb1476_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/arb1476/w1476b.v21", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + + device_add(&ali1489_device); + device_add_params(&fdc37c669_device, (void *) 0); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_win486pci_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/win486pci/v1hj3.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&ali1489_device); + device_add_params(&gm82c803ab_device, (void *) GM82C803B); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_tf486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tf486/tf486v10.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + + device_add(&ali1489_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add_params(&w83977_device, (void *) (W83977EF | W83977_NO_NVR)); + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_ms4145_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ms4145/AG56S.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add(&ali1489_device); + device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sst_flash_29ee010_device); + + return ret; +} + +/* OPTi 802G */ +static void +machine_at_pc330_6573_common_init(const machine_t *model) +{ + machine_at_common_init_ex(model, 2); + device_add(&ide_vlb_2ch_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 5, 6, 7, 8); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 9, 10, 11, 12); + /* This is a guess because the BIOS always gives it a video BIOS + and never gives it an IRQ, so it is impossible to known for + certain until we obtain PCI readouts from the real machine. */ + pci_register_slot(0x0E, PCI_CARD_VIDEO, 13, 14, 15, 16); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add(&opti602_device); + device_add(&opti802g_device); + device_add(&opti822_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + device_add(&ide_opti611_vlb_device); + device_add(&intel_flash_bxt_device); +} + +int +machine_at_aptiva510_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/aptiva510/$IMAGES.USF", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_pc330_6573_common_init(model); + + return ret; +} + +int +machine_at_pc330_6573_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc330_6573/$IMAGES.USF", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_pc330_6573_common_init(model); + + return ret; +} + +/* OPTi 895 */ +static const device_config_t pb450_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "pb450a", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { .name = "PhoenixBIOS 4.03 - Revision PCI 1.0A", .internal_name = "pb450a_pci10a" /*"pci10a"*/, .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/pb450/OPTI802.bin", "" } }, + { .name = "PhoenixBIOS 4.03 - Revision PNP 1.1A", .internal_name = "pb450a", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/pb450/PNP11A.bin", "" } }, + { .name = "PhoenixBIOS 4.05 - Revision P4HS20 (by Micro Firmware)", .internal_name = "pb450a_p4hs20", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/pb450/p4hs20.bin", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t pb450_device = { + .name = "Packard Bell PB450", + .internal_name = "pb450_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = pb450_config +}; + +int +machine_at_pb450_init(const machine_t *model) +{ + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + device_add(&ide_vlb_2ch_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 5, 6, 7, 8); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add(&opti895_device); + device_add(&opti602_device); + device_add(&opti822_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + device_add(&ide_opti611_vlb_device); + device_add(&intel_flash_bxt_device); + device_add(&phoenix_486_jumper_pci_device); + + return ret; +} + +/* i420EX */ +int +machine_at_486pi_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486pi/486pi.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_NORMAL, 1, 2, 1, 2); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 1, 2); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&i420ex_device); + + return ret; +} + +int +machine_at_bat4ip3e_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/bat4ip3e/404C.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_IDE, 0xfe, 0xff, 0, 0); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 1, 2); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 1, 2, 1); + pci_register_slot(0x0a, PCI_CARD_NORMAL, 1, 2, 1, 2); + + device_add(&phoenix_486_jumper_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&i420ex_device); + device_add(&ide_cmd640_pci_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + + return ret; +} + +int +machine_at_486ap4_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486ap4/0205.002", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + /* Excluded: 5, 6, 7, 8 */ + pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 09 = Slot 1 */ + pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 0a = Slot 2 */ + pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 0b = Slot 3 */ + pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 0c = Slot 4 */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add(&i420ex_device); + + return ret; +} + +int +machine_at_ninja_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined("roms/machines/ninja/1008AY0_.BIO", + "roms/machines/ninja/1008AY0_.BI1", 0x1c000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + device_add(&amstrad_megapc_nvr_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 1, 2); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 1, 2, 1); + + machine_force_ps2(1); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&intel_flash_bxt_ami_device); + + device_add(&i420ex_device); + device_add_params(&i82091aa_device, (void *) I82091AA_022); + + return ret; +} + +int +machine_at_sb486p_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/sb486p/amiboot.rom", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 1, 2); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add_params(&i82091aa_device, (void *) I82091AA_022); + device_add(&i420ex_device); + + return ret; +} + +/* i420TX */ +int +machine_at_amis76_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_inverted("roms/machines/s76p/S76P.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + // pci_register_slot(0x01, PCI_CARD_IDE, 1, 2, 3 ,4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sio_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_ami_device); + + device_add(&i420tx_device); + // device_add(&ide_cmd640_pci_device); /* is this actually cmd640? is it single channel? */ + device_add(&ide_pci_device); + + return ret; +} + +int +machine_at_486sp3_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486sp3/awsi2737.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&ide_isa_device); + + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SCSI, 1, 2, 3, 4); /* 01 = SCSI */ + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 03 = Slot 1 */ + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ + pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */ + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sio_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C663 | FDC37C6XX_IDE_PRI)); + device_add(&sst_flash_29ee010_device); + + device_add(&i420tx_device); + device_add(&ncr53c810_onboard_pci_device); + + return ret; +} + +int +machine_at_alfredo_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined("roms/machines/alfredo/1010AQ0_.BIO", + "roms/machines/alfredo/1010AQ0_.BI1", 0x1c000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + device_add(&amstrad_megapc_nvr_device); + device_add(&ide_pci_device); + + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 2, 1, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sio_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C663); + device_add(&intel_flash_bxt_ami_device); + + device_add(&i420tx_device); + + return ret; +} + +/* i420ZX */ +int +machine_at_486sp3g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486sp3g/PCI-I-486SP3G_0306.001 (Beta).bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&ide_isa_device); + + pci_init(PCI_CONFIG_TYPE_2); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SCSI, 1, 2, 3, 4); /* 01 = SCSI */ + pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 06 = Slot 1 */ + pci_register_slot(0x05, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 05 = Slot 2 */ + pci_register_slot(0x04, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 04 = Slot 3 */ + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sio_zb_device); + device_add_params(&pc873xx_device, (void *) (PC87332 | PCX73XX_IDE_PRI | PCX730X_398)); + device_add(&sst_flash_29ee010_device); + + device_add(&i420zx_device); + device_add(&ncr53c810_onboard_pci_device); + + return ret; +} + +static const device_config_t sb486pv_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "sb486pv", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { .name = "AMI WinBIOS (062594) - Revision 0108", .internal_name = "sb486pv_0108", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/sb486pv/41-0108-062594-SATURN2.rom", "" } }, + { .name = "AMI WinBIOS (062594) - Revision 0301", .internal_name = "sb486pv_0301", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/sb486pv/0301-062594-SATURN2.rom", "" } }, + { .name = "AMIBIOS 6 (071595) - Revision 1301", .internal_name = "sb486pv", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/sb486pv/amiboot.rom", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t sb486pv_device = { + .name = "ICS SB486PV", + .internal_name = "sb486pv_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = sb486pv_config +}; + +int +machine_at_sb486pv_init(const machine_t *model) +{ + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + if (!strcmp(fn, "roms/machines/sb486pv/amiboot.rom")) + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + else + ret = bios_load_linear_inverted(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_2); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0e, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x0f, PCI_CARD_VIDEO, 1, 2, 3, 4); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_zb_device); + device_add(&ide_rz1000_pci_single_channel_device); + device_add_params(&i82091aa_device, (void *) I82091AA_26E); + if (!strcmp(fn, "roms/machines/sb486pv/amiboot.rom")) + device_add(&intel_flash_bxt_device); + else + device_add(&intel_flash_bxt_ami_device); + + device_add(&i420zx_device); + + return ret; +} + +/* IMS 8848 */ +int +machine_at_pci400cb_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pci400cb/032295.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + device_add(&ami_1994_nvr_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 3, 2, 1); /* 0F = Slot 1 */ + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 0E = Slot 2 */ + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 0D = Slot 3 */ + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 0C = Slot 4 */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&ims8848_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +/* SiS 496 */ +static void +machine_at_sis_85c496_common_init(UNUSED(const machine_t *model)) +{ + device_add(&ide_pci_2ch_device); + + pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); + pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + + pci_set_irq_routing(PCI_INTA, PCI_IRQ_DISABLED); + pci_set_irq_routing(PCI_INTB, PCI_IRQ_DISABLED); + pci_set_irq_routing(PCI_INTC, PCI_IRQ_DISABLED); + pci_set_irq_routing(PCI_INTD, PCI_IRQ_DISABLED); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); +} + +int +machine_at_acerp3_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/acerp3/Acer Mate 600 P3 BIOS U13 V2.0R02-J3 ACR8DE00-S00-950911-R02-J3.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_device); + pci_register_slot(0x09, PCI_CARD_VIDEO, 0, 0, 0, 0); + pci_register_slot(0x0A, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); + + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&ide_cmd640_pci_legacy_only_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&gd5434_onboard_pci_device); + + device_add(&intel_flash_bxt_device); + + return ret; +} + +int +machine_at_486sp3c_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486sp3c/SI4I0306.AWD", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_device); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&intel_flash_bxt_device); + + return ret; +} + +int +machine_at_ls486e_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ls486e/LS486E RevC.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_ls486e_device); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_m4li_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/m4li/M4LI.04S", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_device); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_ms4144_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ms4144/ms-4144-1.4.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_ls486e_device); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_r418_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/r418/r418i.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_device); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_4saw2_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/4saw2/4saw0911.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_device); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add_params(&w837x7_device, (void *) (W83777F | W837X7_KEY_89)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&intel_flash_bxt_device); + + return ret; +} + +int +machine_at_4dps_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/4dps/4DPS172G.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + machine_at_sis_85c496_common_init(model); + device_add(&sis_85c496_device); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add_params(&w837x7_device, (void *) (W83787IF | W837X7_KEY_89)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&intel_flash_bxt_device); + + return ret; +} + +/* UMC 8881 */ +int +machine_at_atc1415_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/atc1415/1415V330.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&umc_hb4_device); + device_add(&umc_8886bf_device); + device_add(&intel_flash_bxt_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} + +int +machine_at_84xxuuda_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/84xxuuda/uud0520s.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&umc_hb4_device); + device_add(&umc_8886bf_device); + device_add_params(&um866x_device, (void *) UM8663BF); + device_add(&winbond_flash_w29c010_device); + + return ret; +} + +int +machine_at_pl4600c_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pl4600c/SST29EE010.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* Slot 01 */ + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); /* Slot 02 */ + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); /* Onboard */ + pci_register_slot(0x13, PCI_CARD_VIDEO, 0, 0, 0, 0); /* Onboard */ + + + device_add(&umc_hb4_device); + device_add(&umc_8886af_device); + device_add_params(&um866x_device, (void *) UM8663AF); + device_add(&sst_flash_29ee010_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&gd5430_onboard_pci_device); + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(&ess_1688_device); + + if (fdc_current[0] == FDC_INTERNAL){ + fdd_set_turbo(0, 1); + fdd_set_turbo(1, 1); + } + + return ret; +} + +int +machine_at_ecs486_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ecs486/8810AIO.32J", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&umc_hb4_device); + device_add(&umc_8886f_device); + device_add(&ide_cmd640_pci_legacy_only_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +int +machine_at_actionpc2600_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/actionpc2600/action2600.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 3); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_VIDEO, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add(&umc_hb4_device); + device_add(&umc_8886bf_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + return ret; +} + +int +machine_at_actiontower8400_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/actiontower8400/V31C.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x15, PCI_CARD_VIDEO, 0, 0, 0, 0); + pci_register_slot(0x16, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x14, PCI_CARD_NORMAL, 2, 3, 4, 1); + + device_add(&umc_hb4_device); + device_add(&umc_8886f_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&ide_cmd640_pci_device); + device_add(&intel_flash_bxt_device); // The ActionPC 2600 has this so I'm gonna assume this does too. + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + return ret; +} + +int +machine_at_m919_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/m919/9190914s.rom", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&umc_hb4_device); + device_add(&umc_8886af_device); /* AF is correct - the BIOS does IDE writes to ports 108h and 109h. */ + device_add_params(&um866x_device, (void *) UM8663BF); + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_spc7700plw_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/spc7700plw/77LW13FH.P24", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add(&umc_hb4_device); + device_add(&umc_8886af_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + return ret; +} + +static const device_config_t hot433a_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "hot433a", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { .name = "AMIBIOS 5 (101094) - Revision 433AUS33", .internal_name = "hot433a", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/hot433/433AUS33.ROM", "" } }, + { .name = "AwardBIOS v4.51PG - Revision 2.5 (by eSupport)", .internal_name = "hot433a_v451pg", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/hot433/2A4X5H21.BIN", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t hot433a_device = { + .name = "Shuttle HOT-433A", + .internal_name = "hot433a_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = hot433a_config +}; + +int +machine_at_hot433a_init(const machine_t *model) +{ + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + int is_award = !strcmp(device_get_config_bios("bios"), "hot433a_award"); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + if (is_award) + device_add(&amstrad_megapc_nvr_device); + else + device_add(&ami_1994_nvr_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); + + device_add(&umc_hb4_device); + device_add(&umc_8886bf_device); + if (is_award) + device_add_params(&um866x_device, (void *) UM8663AF); + else + device_add_params(&um8669f_device, (void *) 0); + device_add(&winbond_flash_w29c010_device); + if (is_award) + machine_force_ps2(1); + else + machine_force_ps2(0); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + pic_toggle_latch(is_award); + + return ret; +} + +/* VIA VT82C496G */ +int +machine_at_g486vpa_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/g486vpa/3.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add(&via_vt82c49x_pci_ide_device); + device_add(&via_vt82c505_device); + device_add_params(&pc873xx_device, (void *) (PC87332 | PCX73XX_IDE_SEC | PCX730X_398)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sst_flash_29ee010_device); + + return ret; +} + +int +machine_at_486vipio2_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/486vipio2/1175G701.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add(&via_vt82c49x_pci_ide_device); + device_add(&via_vt82c505_device); + device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + device_add(&winbond_flash_w29c010_device); + + return ret; +} diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c index 6fd66bae6..2e5768cbc 100644 --- a/src/machine/m_at_socket4.c +++ b/src/machine/m_at_socket4.c @@ -8,11 +8,9 @@ * * Implementation of Socket 4 machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -41,41 +39,7 @@ #include <86box/video.h> #include <86box/machine.h> -int -machine_at_v12p_init(const machine_t *model) - -{ - int ret = 0; - const char* fn; - - /* No ROMs available */ - if (!device_available(model->device)) - return ret; - - device_context(model->device); - fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); - ret = bios_load_linear(fn, 0x000e0000, 131072, 0); - device_context_restore(); - - machine_at_common_init(model); - - device_add(&ide_isa_device); - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SCSI, 1, 4, 3, 2); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 2, 1, 4, 3); - pci_register_slot(0x03, PCI_CARD_NORMAL, 3, 2, 1, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 0, 0, 0); - pci_register_slot(0x05, PCI_CARD_NORMAL, 0, 0, 0, 0); - device_add(&i430lx_device); - device_add(&kbc_ps2_acer_pci_device); - device_add(&sio_zb_device); - device_add_params(&pc87310_device, (void *) (PC87310_ALI)); - device_add(&amd_am28f010_flash_device); - - return ret; -} - +/* i430LX */ static const device_config_t v12p_config[] = { // clang-format off { @@ -112,49 +76,72 @@ const device_t v12p_device = { .config = v12p_config }; -void -machine_at_premiere_common_init(const machine_t *model, int pci_switch) +int +machine_at_v12p_init(const machine_t *model) { + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + machine_at_common_init(model); + + device_add(&ide_isa_device); + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SCSI, 1, 4, 3, 2); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 2, 1, 4, 3); + pci_register_slot(0x03, PCI_CARD_NORMAL, 3, 2, 1, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 0, 0, 0); + pci_register_slot(0x05, PCI_CARD_NORMAL, 0, 0, 0, 0); + device_add(&i430lx_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_zb_device); + device_add_params(&pc87310_device, (void *) (PC87310_ALI)); + device_add(&amd_am28f010_flash_device); + + return ret; +} + +int +machine_at_ambradp60_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined("roms/machines/ambradp60/1004AF1P.BIO", + "roms/machines/ambradp60/1004AF1P.BI1", + 0x1c000, 128); + + if (bios_only || !ret) + return ret; + machine_at_common_init_ex(model, 2); device_add(&amstrad_megapc_nvr_device); - device_add(&ide_pci_2ch_device); + device_add(&ide_pci_device); - pci_init(PCI_CONFIG_TYPE_2 | pci_switch); + pci_init(PCI_CONFIG_TYPE_2); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 2, 1, 4); pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sio_zb_device); - device_add(&ide_rz1000_pci_single_channel_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); device_add(&intel_flash_bxt_ami_device); -} -void -machine_at_sp4_common_init(const machine_t *model) -{ - machine_at_common_init(model); + device_add(&i430lx_device); - pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - /* Excluded: 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14 */ - pci_register_slot(0x0D, PCI_CARD_IDE, 1, 2, 3, 4); - /* Excluded: 02, 03*, 04*, 05*, 06*, 07*, 08* */ - /* Slots: 09 (04), 0A (03), 0B (02), 0C (07) */ - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); - device_add(&sis_85c50x_device); - device_add(&ide_cmd640_pci_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); + return ret; } int @@ -178,7 +165,7 @@ machine_at_excaliburpci_init(const machine_t *model) pci_register_slot(0x0D, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ide_cmd640_pci_legacy_only_device); device_add(&i430lx_device); @@ -208,11 +195,11 @@ machine_at_p5mp3_init(const machine_t *model) pci_register_slot(0x03, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 03 = Slot 3 */ pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&fdc_at_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&i430lx_device); device_add(&sio_zb_device); device_add(&catalyst_flash_device); - device_add(&i430lx_device); return ret; } @@ -243,7 +230,7 @@ machine_at_dellxp60_init(const machine_t *model) pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 1, 3, 4); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430lx_device); - device_add(&kbc_ps2_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sio_zb_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_ami_device); @@ -274,7 +261,7 @@ machine_at_opti560l_init(const machine_t *model) pci_register_slot(0x08, PCI_CARD_NORMAL, 2, 1, 3, 4); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430lx_device); - device_add(&kbc_ps2_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sio_zb_device); device_add_params(&i82091aa_device, (void *) I82091AA_022); device_add(&intel_flash_bxt_ami_device); @@ -282,34 +269,40 @@ machine_at_opti560l_init(const machine_t *model) return ret; } +void +machine_at_award_common_init(const machine_t *model) +{ + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 03 = Slot 1 */ + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ + pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */ + pci_register_slot(0x07, PCI_CARD_SCSI, 1, 2, 3, 4); /* 07 = SCSI */ + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_zb_device); + device_add(&intel_flash_bxt_device); +} + int -machine_at_ambradp60_init(const machine_t *model) +machine_at_586is_init(const machine_t *model) { int ret; - ret = bios_load_linear_combined("roms/machines/ambradp60/1004AF1P.BIO", - "roms/machines/ambradp60/1004AF1P.BI1", - 0x1c000, 128); + ret = bios_load_linear("roms/machines/586is/IS.34", + 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; - machine_at_common_init_ex(model, 2); - - device_add(&amstrad_megapc_nvr_device); - device_add(&ide_pci_device); - - pci_init(PCI_CONFIG_TYPE_2); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 2, 1, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_phoenix_device); - device_add(&sio_zb_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - device_add(&intel_flash_bxt_ami_device); + machine_at_award_common_init(model); device_add(&i430lx_device); @@ -339,7 +332,7 @@ machine_at_valuepointp60_init(const machine_t *model) pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ps1_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sio_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); device_add(&intel_flash_bxt_ami_device); @@ -352,6 +345,28 @@ machine_at_valuepointp60_init(const machine_t *model) return ret; } +void +machine_at_premiere_common_init(const machine_t *model, int pci_switch) +{ + machine_at_common_init_ex(model, 2); + + device_add(&amstrad_megapc_nvr_device); + device_add(&ide_pci_2ch_device); + + pci_init(PCI_CONFIG_TYPE_2 | pci_switch); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 2, 1, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_zb_device); + device_add(&ide_rz1000_pci_single_channel_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + device_add(&intel_flash_bxt_ami_device); +} + int machine_at_revenge_init(const machine_t *model) { @@ -371,42 +386,32 @@ machine_at_revenge_init(const machine_t *model) return ret; } -void -machine_at_award_common_init(const machine_t *model) -{ - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 03 = Slot 1 */ - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ - pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */ - pci_register_slot(0x07, PCI_CARD_SCSI, 1, 2, 3, 4); /* 07 = SCSI */ - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - device_add(&kbc_at_ami_device); - device_add(&sio_zb_device); - device_add(&intel_flash_bxt_device); -} - int -machine_at_586is_init(const machine_t *model) +machine_at_m5pi_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/586is/IS.34", + ret = bios_load_linear_inverted("roms/machines/m5pi/M5PI10R.BIN", 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; - machine_at_award_common_init(model); + machine_at_common_init(model); - device_add(&i430lx_device); + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x0f, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0c, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add(&i430lx_device); + device_add(&sio_zb_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&ide_w83769f_pci_single_channel_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + device_add(&intel_flash_bxt_ami_device); return ret; } @@ -439,7 +444,7 @@ machine_at_pb520r_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(&gd5434_onboard_pci_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sio_zb_device); device_add_params(&i82091aa_device, (void *) (I82091AA_022 | I82091AA_IDE_PRI)); device_add(&intel_flash_bxt_ami_device); @@ -447,32 +452,24 @@ machine_at_pb520r_init(const machine_t *model) return ret; } +/* OPTi 597 */ int -machine_at_m5pi_init(const machine_t *model) +machine_at_excalibur_init(const machine_t *model) { int ret; - ret = bios_load_linear_inverted("roms/machines/m5pi/M5PI10R.BIN", - 0x000e0000, 131072, 0); + ret = bios_load_linear_inverted("roms/machines/excalibur/S75P.ROM", + 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; machine_at_common_init(model); - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x0f, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0c, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&i430lx_device); - device_add(&sio_zb_device); - device_add(&kbc_ps2_phoenix_device); - device_add(&ide_w83769f_pci_single_channel_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); - device_add(&intel_flash_bxt_ami_device); + device_add(&opti5x7_device); + device_add(&ide_opti611_vlb_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C661); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -500,7 +497,7 @@ machine_at_globalyst330_p5_init(const machine_t *model) device_add(&opti5x7_pci_device); device_add(&opti822_device); device_add(&sst_flash_29ee010_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -508,27 +505,6 @@ machine_at_globalyst330_p5_init(const machine_t *model) return ret; } -int -machine_at_excalibur_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_inverted("roms/machines/excalibur/S75P.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&opti5x7_device); - device_add(&ide_opti611_vlb_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C661); - device_add(&kbc_ps2_intel_ami_pci_device); - - return ret; -} - int machine_at_p5vl_init(const machine_t *model) { @@ -544,7 +520,6 @@ machine_at_p5vl_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); pci_register_slot(0x12, PCI_CARD_NORMAL, 5, 6, 7, 8); pci_register_slot(0x13, PCI_CARD_NORMAL, 9, 10, 11, 12); @@ -553,7 +528,7 @@ machine_at_p5vl_init(const machine_t *model) device_add(&opti5x7_pci_device); device_add(&opti822_device); device_add(&sst_flash_29ee010_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -561,6 +536,7 @@ machine_at_p5vl_init(const machine_t *model) return ret; } +/* SiS 501 */ int machine_at_excaliburpci2_init(const machine_t *model) { @@ -584,7 +560,7 @@ machine_at_excaliburpci2_init(const machine_t *model) pci_register_slot(0x0C, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ide_cmd640_pci_legacy_only_device); device_add(&sis_85c50x_device); @@ -593,6 +569,29 @@ machine_at_excaliburpci2_init(const machine_t *model) return ret; } +void +machine_at_sp4_common_init(const machine_t *model) +{ + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + /* Excluded: 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14 */ + pci_register_slot(0x0D, PCI_CARD_IDE, 1, 2, 3, 4); + /* Excluded: 02, 03*, 04*, 05*, 06*, 07*, 08* */ + /* Slots: 09 (04), 0A (03), 0B (02), 0C (07) */ + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); + device_add(&sis_85c50x_device); + device_add(&ide_cmd640_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); +} + int machine_at_p5sp4_init(const machine_t *model) { @@ -608,3 +607,33 @@ machine_at_p5sp4_init(const machine_t *model) return ret; } + +int +machine_at_ecs50x_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ecs50x/ECSSi5piaio.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x02, PCI_CARD_IDE, 1, 2, 3, 4); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); + device_add(&sis_85c50x_device); + device_add_params(&ide_cmd640_pci_device, (void *) 0x100000); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); + + return ret; +} diff --git a/src/machine/m_at_socket4_5.c b/src/machine/m_at_socket4_5.c new file mode 100644 index 000000000..368f8397f --- /dev/null +++ b/src/machine/m_at_socket4_5.c @@ -0,0 +1,72 @@ +/* + * 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 Socket 4/5 machines. + * + * Authors: Miran Grca, + * + * Copyright 2016-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#include <86box/86box.h> +#include <86box/mem.h> +#include <86box/io.h> +#include <86box/rom.h> +#include <86box/pci.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/fdc_ext.h> +#include <86box/hdc.h> +#include <86box/hdc_ide.h> +#include <86box/timer.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/keyboard.h> +#include <86box/flash.h> +#include <86box/nvr.h> +#include <86box/scsi_ncr53c8xx.h> +#include <86box/sio.h> +#include <86box/timer.h> +#include <86box/video.h> +#include <86box/machine.h> + +/* OPTi 597 */ +int +machine_at_pci56001_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pci56001/AWARD_ISA_PCI_586_non_PNP_SN_013870745_1994.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 5, 6, 7, 8); + pci_register_slot(0x13, PCI_CARD_NORMAL, 9, 10, 11, 12); + pci_register_slot(0x14, PCI_CARD_NORMAL, 13, 14, 15, 16); + + device_add(&opti5x7_pci_device); + device_add(&opti822_device); + device_add(&sst_flash_29ee010_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + return ret; +} diff --git a/src/machine/m_at_socket5.c b/src/machine/m_at_socket5.c index 01812ffe7..6756dfe70 100644 --- a/src/machine/m_at_socket5.c +++ b/src/machine/m_at_socket5.c @@ -8,11 +8,9 @@ * * Implementation of Socket 5 machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -42,13 +40,14 @@ #include <86box/machine.h> #include <86box/sound.h> +/* i430NX */ int -machine_at_plato_init(const machine_t *model) +machine_at_ambradp90_init(const machine_t *model) { int ret; - ret = bios_load_linear_combined("roms/machines/plato/1016ax1_.bio", - "roms/machines/plato/1016ax1_.bi1", + ret = bios_load_linear_combined("roms/machines/ambradp90/1002AX1P.BIO", + "roms/machines/ambradp90/1002AX1P.BI1", 0x1d000, 128); if (bios_only || !ret) @@ -61,6 +60,36 @@ machine_at_plato_init(const machine_t *model) return ret; } +int +machine_at_p54np4_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p54np4/asus-642accdebcb75833703472.bin", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + device_add(&ide_vlb_2ch_device); + + pci_init(PCI_CONFIG_TYPE_2 | PCI_CAN_SWITCH_TYPE); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 07 = Slot 1 */ + pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 06 = Slot 2 */ + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ + pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 04 = Slot 4 */ + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add(&i430nx_device); + device_add(&sio_zb_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); + device_add(&intel_flash_bxt_device); + + return ret; +} + int machine_at_dellplato_init(const machine_t *model) { @@ -81,36 +110,38 @@ machine_at_dellplato_init(const machine_t *model) } int -machine_at_d842_init(const machine_t *model) - +machine_at_586ip_init(const machine_t *model) { - int ret = 0; - const char* fn; + int ret; - /* No ROMs available */ - if (!device_available(model->device)) + ret = bios_load_linear("roms/machines/586ip/IP.20", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) return ret; - device_context(model->device); - fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); - ret = bios_load_linear(fn, 0x000e0000, 131072, 0); - device_context_restore(); + machine_at_award_common_init(model); + + device_add(&i430nx_device); + + return ret; +} + +int +machine_at_plato_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined("roms/machines/plato/1016ax1_.bio", + "roms/machines/plato/1016ax1_.bi1", + 0x1d000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_premiere_common_init(model, PCI_CAN_SWITCH_TYPE); - machine_at_common_init(model); - - device_add(&ide_pci_2ch_device); - pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); /* Onboard */ - pci_register_slot(0x03, PCI_CARD_VIDEO, 4, 0, 0, 0); /* Onboard */ - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); /* Slot 01 */ - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); /* Slot 02 */ - - device_add(&kbc_ps2_pci_device); device_add(&i430nx_device); - device_add(&sio_zb_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); return ret; } @@ -160,72 +191,39 @@ const device_t d842_device = { }; int -machine_at_ambradp90_init(const machine_t *model) +machine_at_d842_init(const machine_t *model) { - int ret; + int ret = 0; + const char* fn; - ret = bios_load_linear_combined("roms/machines/ambradp90/1002AX1P.BIO", - "roms/machines/ambradp90/1002AX1P.BI1", - 0x1d000, 128); - - if (bios_only || !ret) + /* No ROMs available */ + if (!device_available(model->device)) return ret; - machine_at_premiere_common_init(model, PCI_CAN_SWITCH_TYPE); - - device_add(&i430nx_device); - - return ret; -} - -int -machine_at_p54np4_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p54np4/asus-642accdebcb75833703472.bin", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); machine_at_common_init(model); - device_add(&ide_vlb_2ch_device); - pci_init(PCI_CONFIG_TYPE_2 | PCI_CAN_SWITCH_TYPE); + device_add(&ide_pci_2ch_device); + pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 07 = Slot 1 */ - pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 06 = Slot 2 */ - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ - pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 04 = Slot 4 */ - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); /* Onboard */ + pci_register_slot(0x03, PCI_CARD_VIDEO, 4, 0, 0, 0); /* Onboard */ + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); /* Slot 01 */ + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); /* Slot 02 */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430nx_device); device_add(&sio_zb_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_device); return ret; } -int -machine_at_586ip_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/586ip/IP.20", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_award_common_init(model); - - device_add(&i430nx_device); - - return ret; -} - int machine_at_tek932_init(const machine_t *model) { @@ -246,7 +244,7 @@ machine_at_tek932_init(const machine_t *model) pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); - device_add(&kbc_ps2_intel_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430nx_device); device_add(&sio_zb_device); device_add(&ide_vlb_device); @@ -256,6 +254,7 @@ machine_at_tek932_init(const machine_t *model) return ret; } +/* i430FX */ int machine_at_acerv30_init(const machine_t *model) { @@ -278,7 +277,7 @@ machine_at_acerv30_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i430fx_device); device_add(&piix_device); - device_add(&kbc_ps2_acer_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&sst_flash_29ee010_device); @@ -307,7 +306,7 @@ machine_at_apollo_init(const machine_t *model) pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430fx_device); device_add(&piix_device); device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398)); @@ -343,7 +342,7 @@ machine_at_optiplexgxl_init(const machine_t *model) if (sound_card_current[0] == SOUND_INTERNAL) machine_snd = device_add(machine_get_snd_device(machine)); - device_add(&kbc_ps2_phoenix_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430fx_device); device_add(&piix_device); device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_02E)); @@ -386,6 +385,35 @@ machine_at_zappa_gpio_init(void) machine_set_gpio_default(gpio); } +int +machine_at_pt2000_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ficpt2000/PT2000_v1.01.BIN", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&i430fx_device); + device_add(&piix_device); + device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398)); + device_add(&intel_flash_bxt_device); + + return ret; +} + int machine_at_zappa_init(const machine_t *model) { @@ -434,7 +462,7 @@ machine_at_powermatev_init(const machine_t *model) pci_register_slot(0x08, PCI_CARD_NORMAL, 0, 0, 0, 0); pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430fx_device); device_add(&piix_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); @@ -463,7 +491,7 @@ machine_at_hawk_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_tg_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430fx_device); device_add(&piix_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); @@ -472,13 +500,13 @@ machine_at_hawk_init(const machine_t *model) return ret; } - +/* OPTi 597 */ int -machine_at_pt2000_init(const machine_t *model) +machine_at_ncselp90_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/ficpt2000/PT2000_v1.01.BIN", + ret = bios_load_linear("roms/machines/ncselp90/elegancep90.bin", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -487,40 +515,18 @@ machine_at_pt2000_init(const machine_t *model) machine_at_common_init(model); pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - /* Should be VIA, but we do not emulate that yet. */ - device_add(&kbc_ps2_holtek_device); - device_add(&i430fx_device); - device_add(&piix_device); - device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398)); - device_add(&intel_flash_bxt_device); + pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2); - return ret; -} - -int -machine_at_pat54pv_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pat54pv/PAT54PV.bin", - 0x000f0000, 65536, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - device_add(&opti5x7_device); - device_add(&kbc_ps2_intel_ami_pci_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); + device_add(&opti5x7_pci_device); + device_add(&opti822_device); + device_add(&sst_flash_29ee010_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&ide_opti611_vlb_device); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); + device_add(&ide_vlb_2ch_device); return ret; } @@ -547,7 +553,7 @@ machine_at_hot543_init(const machine_t *model) device_add(&opti5x7_pci_device); device_add(&opti822_device); device_add(&sst_flash_29ee010_device); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -556,35 +562,30 @@ machine_at_hot543_init(const machine_t *model) } int -machine_at_ncselp90_init(const machine_t *model) +machine_at_pat54pv_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/ncselp90/elegancep90.bin", - 0x000e0000, 131072, 0); + ret = bios_load_linear("roms/machines/pat54pv/PAT54PV.bin", + 0x000f0000, 65536, 0); if (bios_only || !ret) return ret; machine_at_common_init(model); - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2); + device_add(&opti5x7_device); - device_add(&opti5x7_pci_device); - device_add(&opti822_device); - device_add(&sst_flash_29ee010_device); - device_add(&kbc_ps2_ami_pci_device); - device_add(&ide_opti611_vlb_device); - device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); - device_add(&ide_vlb_2ch_device); + machine_force_ps2(1); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); return ret; } +/* SiS 501 */ int machine_at_p54sp4_init(const machine_t *model) { @@ -625,7 +626,7 @@ machine_at_sq588_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_85c50x_device); device_add(&ide_cmd640_pci_single_channel_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); device_add(&sst_flash_29ee010_device); @@ -654,7 +655,7 @@ machine_at_p54sps_init(const machine_t *model) pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_85c50x_device); device_add(&ide_pci_2ch_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); device_add(&sst_flash_29ee010_device); @@ -685,13 +686,14 @@ machine_at_ms5109_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_550x_85c503_device); device_add(&ide_w83769f_pci_device); - device_add(&kbc_ps2_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); device_add(&sst_flash_29ee010_device); return ret; } +/* SiS 5501 */ int machine_at_torino_init(const machine_t *model) { @@ -719,13 +721,14 @@ machine_at_torino_init(const machine_t *model) device_add(&sis_550x_85c503_device); device_add(&ide_um8673f_device); - device_add(&kbc_ps2_tg_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_ami_device); return ret; } +/* UMC 889x */ int machine_at_hot539_init(const machine_t *model) { @@ -751,7 +754,7 @@ machine_at_hot539_init(const machine_t *model) device_add(&umc_8890_device); device_add(&umc_8886af_device); device_add(&sst_flash_29ee010_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&um866x_device, (void *) UM8663AF); return ret; diff --git a/src/machine/m_at_socket7.c b/src/machine/m_at_socket7.c index 18ef41711..d44758564 100644 --- a/src/machine/m_at_socket7.c +++ b/src/machine/m_at_socket7.c @@ -8,12 +8,9 @@ * * Implementation of Socket 7 (Dual Voltage) machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2020 Miran Grca. - * + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -46,21 +43,13 @@ #include <86box/network.h> #include <86box/pci.h> -void -machine_at_optiplex_21152_init(void) -{ - uint8_t bus_index = pci_bridge_get_bus_index(device_add(&dec21152_device)); - pci_register_bus_slot(bus_index, 0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_bus_slot(bus_index, 0x0a, PCI_CARD_NORMAL, 4, 2, 1, 3); - pci_register_bus_slot(bus_index, 0x0b, PCI_CARD_NORMAL, 1, 3, 4, 2); -} - +/* i430HX */ int -machine_at_acerv35n_init(const machine_t *model) +machine_at_acerm3a_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/acerv35n/v35nd1s1.bin", + ret = bios_load_linear("roms/machines/acerm3a/r01-b3.bin", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -71,54 +60,20 @@ machine_at_acerv35n_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x10, PCI_CARD_VIDEO, 4, 0, 0, 0); device_add(&i430hx_device); device_add(&piix3_device); - /* The chip is not marked FR but the BIOS accesses register 06h of GPIO. */ - device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_FR)); + device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL)); + device_add(&sst_flash_29ee010_device); return ret; } -int -machine_at_ap5vm_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ap5vm/AP5V270.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - /* It seems there were plans for an on-board NCR 53C810 according to some clues - left in the manual, but were latter scrapped. The BIOS still support that - PCI device, though, so why not. */ - pci_register_slot(0x06, PCI_CARD_SCSI, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&i430vx_device); - device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&ncr53c810_onboard_pci_device); - device_add(&intel_flash_bxt_device); - - return ret; -} - int machine_at_p55t2p4_init(const machine_t *model) { @@ -141,149 +96,46 @@ machine_at_p55t2p4_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430hx_device); device_add(&piix3_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&intel_flash_bxt_device); return ret; } +void +machine_at_p65up5_common_init(const machine_t *model, const device_t *northbridge) +{ + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + device_add(northbridge); + device_add(&piix3_ioapic_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); + device_add(&sst_flash_29ee010_device); + device_add(&ioapic_device); +} + int -machine_at_m7shi_init(const machine_t *model) +machine_at_p65up5_cp55t2d_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/m7shi/m7shi2n.rom", - 0x000c0000, 262144, 0); + ret = bios_load_linear("roms/machines/p65up5/TD5I0201.AWD", + 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - device_add(&i430hx_device); - device_add(&piix3_device); - device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL)); - device_add(&intel_flash_bxt_device); - - return ret; -} - -/* The Sony VAIO is an AG430HX, I'm assuming it has the same configuration bits - as the TC430HX, hence the #define. */ -#define machine_at_ag430hx_gpio_init machine_at_tc430hx_gpio_init - -/* The PB680 is a NV430VX, I'm assuming it has the same configuration bits as - the TC430HX, hence the #define. */ -#define machine_at_nv430vx_gpio_init machine_at_tc430hx_gpio_init - -static void -machine_at_tc430hx_gpio_init(void) -{ - uint32_t gpio = 0xffffe1ff; - - /* Register 0x0079: */ - /* Bit 7: 0 = Clear password, 1 = Keep password. */ - /* Bit 6: 0 = NVRAM cleared by jumper, 1 = NVRAM normal. */ - /* Bit 5: 0 = CMOS Setup disabled, 1 = CMOS Setup enabled. */ - /* Bit 4: External CPU clock (Switch 8). */ - /* Bit 3: External CPU clock (Switch 7). */ - /* 50 MHz: Switch 7 = Off, Switch 8 = Off. */ - /* 60 MHz: Switch 7 = On, Switch 8 = Off. */ - /* 66 MHz: Switch 7 = Off, Switch 8 = On. */ - /* Bit 2: 0 = On-board audio absent, 1 = On-board audio present. */ - /* Bit 1: 0 = Soft-off capable power supply present, 1 = Soft-off capable power supply absent. */ - /* Bit 0: 0 = Reserved. */ - /* NOTE: A bit is read as 1 if switch is off, and as 0 if switch is on. */ - if (cpu_busspeed <= 50000000) - gpio |= 0xffff10ff; - else if ((cpu_busspeed > 50000000) && (cpu_busspeed <= 60000000)) - gpio |= 0xffff18ff; - else if (cpu_busspeed > 60000000) - gpio |= 0xffff00ff; - - machine_set_gpio_default(gpio); -} - -int -machine_at_tc430hx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_combined2("roms/machines/tc430hx/1007DH0_.BIO", - "roms/machines/tc430hx/1007DH0_.BI1", - "roms/machines/tc430hx/1007DH0_.BI2", - "roms/machines/tc430hx/1007DH0_.BI3", - "roms/machines/tc430hx/1007DH0_.RCV", - 0x3a000, 128); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - machine_at_tc430hx_gpio_init(); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&i430hx_device); - device_add(&piix3_device); - device_add_params(&pc87306_device, (void *) PCX730X_AMI); - device_add(&intel_flash_bxt_ami_device); - - return ret; -} - -int -machine_at_infinia7200_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_combined2("roms/machines/infinia7200/1008DH08.BIO", - "roms/machines/infinia7200/1008DH08.BI1", - "roms/machines/infinia7200/1008DH08.BI2", - "roms/machines/infinia7200/1008DH08.BI3", - "roms/machines/infinia7200/1008DH08.RCV", - 0x3a000, 128); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - machine_at_tc430hx_gpio_init(); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - - if (gfxcard[0] == VID_INTERNAL) - device_add(machine_get_vid_device(machine)); - - device_add(&i430hx_device); - device_add(&piix3_device); - device_add_params(&pc87306_device, (void *) PCX730X_AMI); - device_add(&intel_flash_bxt_ami_device); + machine_at_p65up5_common_init(model, &i430hx_device); return ret; } @@ -364,33 +216,79 @@ machine_at_cu430hx_init(const machine_t *model) return ret; } +static void +machine_at_tc430hx_gpio_init(void) +{ + uint32_t gpio = 0xffffe1ff; + + /* Register 0x0079: */ + /* Bit 7: 0 = Clear password, 1 = Keep password. */ + /* Bit 6: 0 = NVRAM cleared by jumper, 1 = NVRAM normal. */ + /* Bit 5: 0 = CMOS Setup disabled, 1 = CMOS Setup enabled. */ + /* Bit 4: External CPU clock (Switch 8). */ + /* Bit 3: External CPU clock (Switch 7). */ + /* 50 MHz: Switch 7 = Off, Switch 8 = Off. */ + /* 60 MHz: Switch 7 = On, Switch 8 = Off. */ + /* 66 MHz: Switch 7 = Off, Switch 8 = On. */ + /* Bit 2: 0 = On-board audio absent, 1 = On-board audio present. */ + /* Bit 1: 0 = Soft-off capable power supply present, 1 = Soft-off capable power supply absent. */ + /* Bit 0: 0 = Reserved. */ + /* NOTE: A bit is read as 1 if switch is off, and as 0 if switch is on. */ + if (cpu_busspeed <= 50000000) + gpio |= 0xffff10ff; + else if ((cpu_busspeed > 50000000) && (cpu_busspeed <= 60000000)) + gpio |= 0xffff18ff; + else if (cpu_busspeed > 60000000) + gpio |= 0xffff00ff; + + machine_set_gpio_default(gpio); +} + int -machine_at_equium5200_init(const machine_t *model) +machine_at_tc430hx_init(const machine_t *model) { int ret; - ret = bios_load_linear_combined2("roms/machines/equium5200/1003DK08.BIO", - "roms/machines/equium5200/1003DK08.BI1", - "roms/machines/equium5200/1003DK08.BI2", - "roms/machines/equium5200/1003DK08.BI3", - "roms/machines/equium5200/1003DK08.RCV", + ret = bios_load_linear_combined2("roms/machines/tc430hx/1007DH0_.BIO", + "roms/machines/tc430hx/1007DH0_.BI1", + "roms/machines/tc430hx/1007DH0_.BI2", + "roms/machines/tc430hx/1007DH0_.BI3", + "roms/machines/tc430hx/1007DH0_.RCV", 0x3a000, 128); if (bios_only || !ret) return ret; - machine_at_cu430hx_common_init(model); + machine_at_common_init_ex(model, 2); + machine_at_tc430hx_gpio_init(); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add(&i430hx_device); + device_add(&piix3_device); + device_add_params(&pc87306_device, (void *) PCX730X_AMI); + device_add(&intel_flash_bxt_ami_device); return ret; } int -machine_at_p55t2s_init(const machine_t *model) +machine_at_m7shi_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/p55t2s/s6y08t.rom", - 0x000e0000, 131072, 0); + ret = bios_load_linear("roms/machines/m7shi/m7shi2n.rom", + 0x000c0000, 262144, 0); if (bios_only || !ret) return ret; @@ -398,20 +296,55 @@ machine_at_p55t2s_init(const machine_t *model) machine_at_common_init_ex(model, 2); pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x12, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x11, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x12, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); device_add(&i430hx_device); device_add(&piix3_device); - device_add_params(&pc87306_device, (void *) PCX730X_AMI); + device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL)); device_add(&intel_flash_bxt_device); return ret; } +int +machine_at_epc2102_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/epc2102/P5000HX.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + device_add_params(&at_nvr_device, (void *) 0x20); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add(&i430hx_device); + device_add(&piix3_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&i82091aa_device, (void *) I82091AA_022); + device_add(&radisys_config_device); + device_add(&sst_flash_39sf010_device); + + return ret; +} + +/* The Sony VAIO is an AG430HX, I'm assuming it has the same configuration bits + as the TC430HX, hence the #define. */ +#define machine_at_ag430hx_gpio_init machine_at_tc430hx_gpio_init + int machine_at_pcv90_init(const machine_t *model) { @@ -447,47 +380,122 @@ machine_at_pcv90_init(const machine_t *model) } int -machine_at_p65up5_cp55t2d_init(const machine_t *model) +machine_at_p55t2s_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/p65up5/TD5I0201.AWD", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_p65up5_common_init(model, &i430hx_device); - - return ret; -} - -int -machine_at_epc2102_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/epc2102/P5000HX.ROM", + ret = bios_load_linear("roms/machines/p55t2s/s6y08t.rom", 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; machine_at_common_init_ex(model, 2); - device_add_params(&at_nvr_device, (void *) 0x20); pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x12, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x11, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430hx_device); device_add(&piix3_device); - device_add(&kbc_ps2_intel_ami_pci_device); - device_add_params(&i82091aa_device, (void *) I82091AA_022); - device_add(&sst_flash_39sf010_device); + device_add_params(&pc87306_device, (void *) PCX730X_AMI); + device_add(&intel_flash_bxt_device); + + return ret; +} + +int +machine_at_equium5200_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined2("roms/machines/equium5200/1003DK08.BIO", + "roms/machines/equium5200/1003DK08.BI1", + "roms/machines/equium5200/1003DK08.BI2", + "roms/machines/equium5200/1003DK08.BI3", + "roms/machines/equium5200/1003DK08.RCV", + 0x3a000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_cu430hx_common_init(model); + + return ret; +} + +int +machine_at_infinia7200_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined2("roms/machines/infinia7200/1008DH08.BIO", + "roms/machines/infinia7200/1008DH08.BI1", + "roms/machines/infinia7200/1008DH08.BI2", + "roms/machines/infinia7200/1008DH08.BI3", + "roms/machines/infinia7200/1008DH08.RCV", + 0x3a000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + machine_at_tc430hx_gpio_init(); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); + + device_add(&i430hx_device); + device_add(&piix3_device); + device_add_params(&pc87306_device, (void *) PCX730X_AMI); + device_add(&intel_flash_bxt_ami_device); + + return ret; +} + +/* i430VX */ +int +machine_at_ap5vm_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ap5vm/AP5V270.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + /* It seems there were plans for an on-board NCR 53C810 according to some clues + left in the manual, but were latter scrapped. The BIOS still support that + PCI device, though, so why not. */ + pci_register_slot(0x06, PCI_CARD_SCSI, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add(&i430vx_device); + device_add(&piix3_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&ncr53c810_onboard_pci_device); + device_add(&intel_flash_bxt_device); return ret; } @@ -514,7 +522,7 @@ machine_at_p55tvp4_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430vx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); // It uses the AMIKEY KBC + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&intel_flash_bxt_device); @@ -542,7 +550,7 @@ machine_at_5ivg_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430vx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&gm82c803c_device, (void *) 0); device_add(&intel_flash_bxt_device); @@ -571,7 +579,7 @@ machine_at_8500tvxa_init(const machine_t *model) pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 3, 2, 1); device_add(&i430vx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&um8669f_device, (void *) 0); device_add(&sst_flash_29ee010_device); @@ -693,7 +701,7 @@ machine_at_p5vxb_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); device_add(&i430vx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&sst_flash_29ee010_device); @@ -728,6 +736,43 @@ machine_at_p55va_init(const machine_t *model) return ret; } +int +machine_at_gw2kte_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear_combined2("roms/machines/gw2kte/1008CY1T.BIO", + "roms/machines/gw2kte/1008CY1T.BI1", + "roms/machines/gw2kte/1008CY1T.BI2", + "roms/machines/gw2kte/1008CY1T.BI3", + "roms/machines/gw2kte/1008CY1T.RCV", + 0x3a000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); + + if ((sound_card_current[0] == SOUND_INTERNAL) && machine_get_snd_device(machine)->available()) + machine_snd = device_add(machine_get_snd_device(machine)); + + device_add(&i430vx_device); + device_add(&piix3_device); + device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_FR)); + device_add(&intel_flash_bxt_ami_device); + + return ret; +} + int machine_at_brio80xx_init(const machine_t *model) { @@ -756,6 +801,79 @@ machine_at_brio80xx_init(const machine_t *model) return ret; } +static const device_config_t lgibmx52_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "lgibmx52", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { .name = "08/21/97", .internal_name = "lgibmx52_082197", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/lgibmx52/BIOS.ROM", "" } }, + { .name = "03/26/99", .internal_name = "lgibmx52", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/lgibmx52/MS5136 LG IBM OEM.ROM", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t lgibmx52_device = { + .name = "LG IBM Multinet x52 (MSI MS-5136)", + .internal_name = "lgibmx52_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = lgibmx52_config +}; + +int +machine_at_lgibmx52_init(const machine_t *model) +{ + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add(&i430vx_device); + device_add(&piix3_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); + device_add(&winbond_flash_w29c010_device); + + return ret; +} + +/* The PB680 is a NV430VX, I'm assuming it has the same configuration bits as + the TC430HX, hence the #define. */ +#define machine_at_nv430vx_gpio_init machine_at_tc430hx_gpio_init + int machine_at_pb680_init(const machine_t *model) { @@ -846,7 +964,7 @@ machine_at_mb520n_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430vx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c669_device, (void *) 0); device_add(&intel_flash_bxt_device); @@ -875,80 +993,14 @@ machine_at_i430vx_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); device_add(&i430vx_device); device_add(&piix3_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&um8669f_device, (void *) 0); device_add(&intel_flash_bxt_device); return ret; } -int -machine_at_gw2kte_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_combined2("roms/machines/gw2kte/1008CY1T.BIO", - "roms/machines/gw2kte/1008CY1T.BI1", - "roms/machines/gw2kte/1008CY1T.BI2", - "roms/machines/gw2kte/1008CY1T.BI3", - "roms/machines/gw2kte/1008CY1T.RCV", - 0x3a000, 128); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4); - - if ((sound_card_current[0] == SOUND_INTERNAL) && machine_get_snd_device(machine)->available()) - machine_snd = device_add(machine_get_snd_device(machine)); - - device_add(&i430vx_device); - device_add(&piix3_device); - device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_FR)); - device_add(&intel_flash_bxt_ami_device); - - return ret; -} - -int -machine_at_ma23c_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ma23c/BIOS.ROM", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_VIDEO, 3, 4, 1, 2); - device_add(&i430tx_device); - device_add(&piix4_device); - device_add(&nec_mate_unk_device); - device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370)); - device_add(&intel_flash_bxt_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); - - return ret; -} - +/* i430TX */ int machine_at_nupro592_init(const machine_t *model) { @@ -1013,7 +1065,7 @@ machine_at_tx97_init(const machine_t *model) pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); device_add(&i430tx_device); device_add(&piix4_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w83877_device, (void *) (W83877TF | W83877_3F0)); device_add(&intel_flash_bxt_device); spd_register(SPD_TYPE_SDRAM, 0x3, 128); @@ -1028,6 +1080,15 @@ machine_at_tx97_init(const machine_t *model) return ret; } +void +machine_at_optiplex_21152_init(void) +{ + uint8_t bus_index = pci_bridge_get_bus_index(device_add(&dec21152_device)); + pci_register_bus_slot(bus_index, 0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_bus_slot(bus_index, 0x0a, PCI_CARD_NORMAL, 4, 2, 1, 3); + pci_register_bus_slot(bus_index, 0x0b, PCI_CARD_NORMAL, 1, 3, 4, 2); +} + int machine_at_optiplexgn_init(const machine_t *model) { @@ -1066,6 +1127,137 @@ machine_at_optiplexgn_init(const machine_t *model) return ret; } +int +machine_at_tomahawk_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tomahawk/0AAGT046.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */ + pci_register_slot(0x0D, PCI_CARD_VIDEO, 3, 0, 0, 0); + pci_register_slot(0x0E, PCI_CARD_NETWORK, 4, 0, 0, 0); + pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2); + device_add(&i430tx_device); + device_add(&piix4_device); + device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370)); + device_add(&amd_flash_29f020a_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 128); + device_add(&lm78_device); /* fans: Thermal, CPU, Chassis; temperature: unused */ + device_add(&lm75_1_4a_device); /* temperature: CPU */ + + if ((gfxcard[0] == VID_INTERNAL) && machine_get_vid_device(machine)) + device_add(machine_get_vid_device(machine)); + + if ((sound_card_current[0] == SOUND_INTERNAL) && machine_get_snd_device(machine)) + device_add(machine_get_snd_device(machine)); + + if ((net_cards_conf[0].device_num == NET_INTERNAL) && machine_get_net_device(machine)) + device_add(machine_get_net_device(machine)); + + return ret; +} + +int +machine_at_ym430tx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ym430tx/YM430TX.003", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */ + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + device_add(&i430tx_device); + device_add(&piix4_device); + device_add_params(&w83977_device, (void *) (W83977TF | W83977_AMI | W83977_NO_NVR)); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 128); + + return ret; +} + +int +machine_at_thunderbolt_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/thunderbolt/tbolt-01.rom", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 1, 2, 3); /* PIIX4 */ + pci_register_slot(0x11, PCI_CARD_NORMAL, 0, 1, 2, 3); + pci_register_slot(0x12, PCI_CARD_NORMAL, 1, 2, 3, 0); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 0, 1); + pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 0, 1, 2); + device_add(&i430tx_device); + device_add(&piix4_device); + device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL | FDC37C93X_NO_NVR)); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 128); + + return ret; +} + +int +machine_at_ma23c_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ma23c/BIOS.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_VIDEO, 3, 4, 1, 2); + device_add(&i430tx_device); + device_add(&piix4_device); + device_add(&nec_mate_unk_device); + device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370)); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + return ret; +} + int machine_at_an430tx_init(const machine_t *model) { @@ -1105,37 +1297,6 @@ machine_at_an430tx_init(const machine_t *model) return ret; } -int -machine_at_ym430tx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ym430tx/YM430TX.003", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */ - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - device_add(&i430tx_device); - device_add(&piix4_device); - device_add_params(&w83977_device, (void *) (W83977TF | W83977_AMI | W83977_NO_NVR)); - device_add(&intel_flash_bxt_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 128); - - return ret; -} - int machine_at_mb540n_init(const machine_t *model) { @@ -1158,7 +1319,7 @@ machine_at_mb540n_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */ device_add(&i430tx_device); device_add(&piix4_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&um8669f_device, (void *) 0); device_add(&sst_flash_29ee010_device); spd_register(SPD_TYPE_SDRAM, 0x3, 128); @@ -1189,7 +1350,7 @@ machine_at_56a5_init(const machine_t *model) pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); device_add(&i430tx_device); device_add(&piix4_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&sst_flash_29ee010_device); spd_register(SPD_TYPE_SDRAM, 0x3, 128); @@ -1251,7 +1412,7 @@ machine_at_richmond_init(const machine_t *model) pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i430tx_device); device_add(&piix4_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&it8671f_device); device_add(&intel_flash_bxt_device); spd_register(SPD_TYPE_SDRAM, 0x3, 128); @@ -1261,47 +1422,7 @@ machine_at_richmond_init(const machine_t *model) return ret; } -int -machine_at_tomahawk_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tomahawk/0AAGT046.ROM", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); /* PIIX4 */ - pci_register_slot(0x0D, PCI_CARD_VIDEO, 3, 0, 0, 0); - pci_register_slot(0x0E, PCI_CARD_NETWORK, 4, 0, 0, 0); - pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2); - device_add(&i430tx_device); - device_add(&piix4_device); - device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370)); - device_add(&amd_flash_29f020a_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 128); - device_add(&lm78_device); /* fans: Thermal, CPU, Chassis; temperature: unused */ - device_add(&lm75_1_4a_device); /* temperature: CPU */ - - if ((gfxcard[0] == VID_INTERNAL) && machine_get_vid_device(machine)) - device_add(machine_get_vid_device(machine)); - - if ((sound_card_current[0] == SOUND_INTERNAL) && machine_get_snd_device(machine)) - device_add(machine_get_snd_device(machine)); - - if ((net_cards_conf[0].device_num == NET_INTERNAL) && machine_get_net_device(machine)) - device_add(machine_get_net_device(machine)); - - return ret; -} - +/* VIA VPX */ int machine_at_ficva502_init(const machine_t *model) { @@ -1324,7 +1445,6 @@ machine_at_ficva502_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); device_add(&via_vpx_device); device_add(&via_vt82c586b_device); - device_add(&kbc_ps2_pci_device); device_add_params(&fdc37c669_device, (void *) FDC37C6XX_370); device_add(&sst_flash_29ee010_device); spd_register(SPD_TYPE_SDRAM, 0x3, 256); @@ -1332,6 +1452,7 @@ machine_at_ficva502_init(const machine_t *model) return ret; } +/* VIA VP3 */ int machine_at_ficpa2012_init(const machine_t *model) { @@ -1356,7 +1477,6 @@ machine_at_ficpa2012_init(const machine_t *model) device_add(&via_vp3_device); device_add(&via_vt82c586b_device); - device_add(&kbc_ps2_pci_device); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&sst_flash_29ee010_device); spd_register(SPD_TYPE_SDRAM, 0x7, 512); @@ -1388,7 +1508,6 @@ machine_at_via809ds_init(const machine_t *model) device_add(&via_vp3_device); device_add(&via_vt82c586b_device); - device_add(&kbc_ps2_ami_pci_device); device_add_params(&fdc37c669_device, (void *) 0); device_add(&intel_flash_bxt_device); spd_register(SPD_TYPE_SDRAM, 0x7, 512); @@ -1396,12 +1515,13 @@ machine_at_via809ds_init(const machine_t *model) return ret; } +/* SiS 5571 */ int -machine_at_r534f_init(const machine_t *model) +machine_at_cb52xsi_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/r534f/r534f008.bin", + ret = bios_load_linear("roms/machines/cb52xsi/CD5205S.ROM", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -1412,14 +1532,13 @@ machine_at_r534f_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_5571_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); + device_add_params(&fdc37c669_device, (void *) FDC37C6XX_370); device_add(&sst_flash_29ee010_device); return ret; @@ -1447,7 +1566,6 @@ machine_at_ms5146_init(const machine_t *model) pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_5571_device); - device_add(&kbc_ps2_ami_pci_device); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&sst_flash_29ee010_device); @@ -1455,11 +1573,11 @@ machine_at_ms5146_init(const machine_t *model) } int -machine_at_cb52xsi_init(const machine_t *model) +machine_at_r534f_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/cb52xsi/CD5205S.ROM", + ret = bios_load_linear("roms/machines/r534f/r534f008.bin", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -1470,19 +1588,19 @@ machine_at_cb52xsi_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x07, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_5571_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c669_device, (void *) FDC37C6XX_370); + device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&sst_flash_29ee010_device); return ret; } +/* SiS 5581 */ int machine_at_sp97xv_init(const machine_t *model) { @@ -1505,7 +1623,6 @@ machine_at_sp97xv_init(const machine_t *model) pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x13, PCI_CARD_VIDEO, 1, 2, 3, 4); /* On-chip SiS graphics, absent here. */ device_add(&sis_5581_device); - device_add(&kbc_ps2_ami_pci_device); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); device_add(&sst_flash_29ee010_device); @@ -1532,13 +1649,13 @@ machine_at_sq578_init(const machine_t *model) pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 4); device_add(&sis_5581_device); - device_add(&kbc_ps2_ami_pci_device); device_add_params(&w83877_device, (void *) (W83877TF | W83877_3F0)); device_add(&sst_flash_29ee010_device); return ret; } +/* SiS 5591 */ int machine_at_ms5172_init(const machine_t *model) { @@ -1560,44 +1677,13 @@ machine_at_ms5172_init(const machine_t *model) pci_register_slot(0x0A, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x0B, PCI_CARD_NORMAL, 3, 4, 1, 2); device_add(&sis_5591_1997_device); - device_add(&kbc_ps2_ami_pci_device); device_add_params(&w83877_device, (void *) (W83877TF | W83877_3F0)); device_add(&sst_flash_29ee010_device); return ret; } -int -machine_at_m560_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/m560/5600410s.ami", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_SOUTHBRIDGE_IDE, 1, 2, 3, 4); - pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE_PMU, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4); - pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); - device_add(&ali1531_device); - device_add(&ali1543_device); /* -5 */ - device_add(&sst_flash_29ee010_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); - - return ret; -} - +/* ALi ALADDiN IV+ */ int machine_at_m5ata_init(const machine_t *model) { @@ -1661,30 +1747,32 @@ machine_at_ms5164_init(const machine_t *model) } int -machine_at_thunderbolt_init(const machine_t *model) +machine_at_m560_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/thunderbolt/tbolt-01.rom", - 0x000c0000, 262144, 0); + ret = bios_load_linear("roms/machines/m560/5600410s.ami", + 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; - machine_at_common_init(model); + machine_at_common_init_ex(model, 2); pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 1, 2, 3); /* PIIX4 */ - pci_register_slot(0x11, PCI_CARD_NORMAL, 0, 1, 2, 3); - pci_register_slot(0x12, PCI_CARD_NORMAL, 1, 2, 3, 0); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 0, 1); - pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 0, 1, 2); - device_add(&i430tx_device); - device_add(&piix4_device); - device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL | FDC37C93X_NO_NVR)); - device_add(&intel_flash_bxt_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 128); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_SOUTHBRIDGE_IDE, 1, 2, 3, 4); + pci_register_slot(0x0C, PCI_CARD_SOUTHBRIDGE_PMU, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); + device_add(&ali1531_device); + device_add(&ali1543_device); /* -5 */ + device_add(&sst_flash_29ee010_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 256); return ret; } diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c index d9933cc08..1166173f2 100644 --- a/src/machine/m_at_socket7_3v.c +++ b/src/machine/m_at_socket7_3v.c @@ -8,11 +8,9 @@ * * Implementation of Socket 7 (Single Voltage) machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2020 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -43,6 +41,87 @@ #include <86box/plat_unused.h> #include <86box/sound.h> +/* i430FX */ +static void +machine_at_p54tp4xe_common_init(const machine_t *model) +{ + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&i430fx_device); + device_add(&piix_device); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); +} + +int +machine_at_p54tp4xe_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p54tp4xe/t15i0302.awd", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_p54tp4xe_common_init(model); + + return ret; +} + +int +machine_at_p54tp4xe_mr_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p54tp4xe/TRITON.BIO", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_p54tp4xe_common_init(model); + + return ret; +} + +int +machine_at_exp8551_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/exp8551/AMI20.BIO", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&i430fx_device); + device_add(&piix_device); + device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); + device_add(&sst_flash_29ee010_device); + + return ret; +} + static void machine_at_thor_gpio_init(void) { @@ -112,86 +191,6 @@ machine_at_thor_common_init(const machine_t *model, int has_video) device_add(&intel_flash_bxt_ami_device); } -static void -machine_at_p54tp4xe_common_init(const machine_t *model) -{ - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); - device_add(&i430fx_device); - device_add(&piix_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); -} - -int -machine_at_p54tp4xe_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p54tp4xe/t15i0302.awd", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_p54tp4xe_common_init(model); - - return ret; -} - -int -machine_at_p54tp4xe_mr_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/p54tp4xe/TRITON.BIO", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_p54tp4xe_common_init(model); - - return ret; -} - -int -machine_at_exp8551_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/exp8551/AMI20.BIO", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); - device_add(&i430fx_device); - device_add(&piix_device); - device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&sst_flash_29ee010_device); - - return ret; -} - int machine_at_gw2katx_init(const machine_t *model) { @@ -209,6 +208,38 @@ machine_at_gw2katx_init(const machine_t *model) return ret; } +int +machine_at_vectra54_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/vectra54/GT0724.22", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0); + pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&s3_phoenix_trio64_onboard_pci_device); + + device_add(&i430fx_device); + device_add(&piix_device); + device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL)); + device_add(&sst_flash_29ee010_device); + + return ret; +} + int machine_at_thor_init(const machine_t *model) { @@ -388,7 +419,7 @@ machine_at_ms5119_init(const machine_t *model) device_add(&i430fx_device); device_add(&piix_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); device_add(&sst_flash_29ee010_device); @@ -481,7 +512,7 @@ machine_at_mb500n_init(const machine_t *model) pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&i430fx_device); device_add(&piix_no_mirq_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); @@ -513,7 +544,7 @@ machine_at_fmb_init(const machine_t *model) device_add(&i430fx_device); device_add(&piix_no_mirq_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); device_add(&intel_flash_bxt_device); @@ -521,11 +552,11 @@ machine_at_fmb_init(const machine_t *model) } int -machine_at_acerm3a_init(const machine_t *model) +machine_at_acerv35n_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/acerm3a/r01-b3.bin", + ret = bios_load_linear("roms/machines/acerv35n/v35nd1s1.bin", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -536,15 +567,15 @@ machine_at_acerm3a_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x10, PCI_CARD_VIDEO, 4, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); device_add(&i430hx_device); device_add(&piix3_device); - device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL)); - + /* The chip is not marked FR but the BIOS accesses register 06h of GPIO. */ + device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_FR)); device_add(&sst_flash_29ee010_device); return ret; @@ -573,7 +604,7 @@ machine_at_ap53_init(const machine_t *model) pci_register_slot(0x06, PCI_CARD_VIDEO, 1, 2, 3, 4); device_add(&i430hx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c669_device, (void *) 0); device_add(&intel_flash_bxt_device); @@ -602,7 +633,7 @@ machine_at_8500tuc_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); device_add(&i430hx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&um8669f_device, (void *) 0); device_add(&intel_flash_bxt_device); @@ -651,7 +682,6 @@ const device_t d943_device = { int machine_at_d943_init(const machine_t *model) - { int ret = 0; const char* fn; @@ -677,7 +707,7 @@ machine_at_d943_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 3, 2, 4); device_add(&i430hx_device); device_add(&piix3_device); - device_add(&kbc_ps2_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_device); spd_register(SPD_TYPE_EDO, 0x7, 256); @@ -691,6 +721,7 @@ machine_at_d943_init(const machine_t *model) return ret; } +/* i430VX */ int machine_at_gw2kma_init(const machine_t *model) { @@ -727,6 +758,110 @@ machine_at_gw2kma_init(const machine_t *model) return ret; } +/* SiS 5501 */ +static const device_config_t c5sbm2_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "5sbm2", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { .name = "AwardBIOS v4.50GP - Revision 07/17/1995", .internal_name = "5sbm2_v450gp", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/5SBM0717.BIN", "" } }, + { .name = "AwardBIOS v4.50PG - Revision 03/26/1996", .internal_name = "5sbm2", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/5SBM0326.BIN", "" } }, + { .name = "AwardBIOS v4.51PG - Revision 2.2 (by Unicore Software)", .internal_name = "5sbm2_451pg", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/2A5ICC3A.BIN", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t c5sbm2_device = { + .name = "Chaintech 5SBM/5SBM2 (M103)", + .internal_name = "5sbm2_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = c5sbm2_config +}; + +int +machine_at_5sbm2_init(const machine_t *model) +{ + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sis_550x_device); + device_add_params(&um866x_device, (void *) UM8663AF); + device_add(&sst_flash_29ee010_device); + + return ret; +} + +/* SiS 5511 */ +int +machine_at_amis727_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/amis727/S727p.rom", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0xFE, 0xFF, 0, 0); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); + + device_add(&sis_5511_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); + device_add(&intel_flash_bxt_device); + + return ret; +} + static const device_config_t ap5s_config[] = { // clang-format off { @@ -791,176 +926,13 @@ machine_at_ap5s_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&sis_5511_device); - device_add(&kbc_ps2_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&sst_flash_29ee010_device); return ret; } -int -machine_at_ms5124_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/ms5124/AG77.ROM", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0xFE, 0xFF, 0, 0); - pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); - - device_add(&sis_5511_device); - device_add(&kbc_ps2_ami_device); - device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_88)); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_amis727_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/amis727/S727p.rom", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0xFE, 0xFF, 0, 0); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - - device_add(&sis_5511_device); - device_add(&kbc_ps2_intel_ami_pci_device); - device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_vectra54_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/vectra54/GT0724.22", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0); - pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2); - - if (gfxcard[0] == VID_INTERNAL) - device_add(&s3_phoenix_trio64_onboard_pci_device); - - device_add(&i430fx_device); - device_add(&piix_device); - device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL)); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -static const device_config_t c5sbm2_config[] = { - // clang-format off - { - .name = "bios", - .description = "BIOS Version", - .type = CONFIG_BIOS, - .default_string = "5sbm2", - .default_int = 0, - .file_filter = "", - .spinner = { 0 }, - .bios = { - { .name = "AwardBIOS v4.50GP - Revision 07/17/1995", .internal_name = "5sbm2_v450gp", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/5SBM0717.BIN", "" } }, - { .name = "AwardBIOS v4.50PG - Revision 03/26/1996", .internal_name = "5sbm2", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/5SBM0326.BIN", "" } }, - { .name = "AwardBIOS v4.51PG - Revision 2.2 (by Unicore Software)", .internal_name = "5sbm2_451pg", .bios_type = BIOS_NORMAL, - .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/5sbm2/2A5ICC3A.BIN", "" } }, - { .files_no = 0 } - }, - }, - { .name = "", .description = "", .type = CONFIG_END } - // clang-format on -}; - -const device_t c5sbm2_device = { - .name = "Chaintech 5SBM/5SBM2 (M103)", - .internal_name = "5sbm2_device", - .flags = 0, - .local = 0, - .init = NULL, - .close = NULL, - .reset = NULL, - .available = NULL, - .speed_changed = NULL, - .force_redraw = NULL, - .config = c5sbm2_config -}; - -int -machine_at_5sbm2_init(const machine_t *model) -{ - int ret = 0; - const char* fn; - - /* No ROMs available */ - if (!device_available(model->device)) - return ret; - - device_context(model->device); - fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); - ret = bios_load_linear(fn, 0x000e0000, 131072, 0); - device_context_restore(); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); - - device_add(&kbc_at_ami_device); - device_add(&sis_550x_device); - device_add_params(&um866x_device, (void *) UM8663AF); - device_add(&sst_flash_29ee010_device); - - return ret; -} - int machine_at_pc140_6260_init(const machine_t *model) { @@ -985,9 +957,38 @@ machine_at_pc140_6260_init(const machine_t *model) device_add(&gd5436_onboard_pci_device); device_add(&sis_5511_device); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c669_device, (void *) 0); device_add(&sst_flash_29ee010_device); return ret; } + +int +machine_at_ms5124_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/ms5124/AG77.ROM", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0xFE, 0xFF, 0, 0); + pci_register_slot(0x10, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); + + device_add(&sis_5511_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_88)); + device_add(&sst_flash_29ee010_device); + + return ret; +} diff --git a/src/machine/m_at_socket8.c b/src/machine/m_at_socket8.c index d9d35b161..bcbf6ba18 100644 --- a/src/machine/m_at_socket8.c +++ b/src/machine/m_at_socket8.c @@ -8,11 +8,9 @@ * * Implementation of Socket 8 machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2019 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -40,6 +38,7 @@ #include "cpu.h" #include <86box/machine.h> +/* i450KX */ int machine_at_ap61_init(const machine_t *model) { @@ -65,10 +64,9 @@ machine_at_ap61_init(const machine_t *model) device_add(&i450kx_device); device_add(&sio_zb_device); device_add(&ide_cmd646_device); - device_add(&kbc_ps2_acer_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&sst_flash_29ee010_device); - // device_add(&intel_flash_bxt_device); return ret; } @@ -100,71 +98,86 @@ machine_at_p6rp4_init(const machine_t *model) device_add(&sio_zb_device); device_add(&ide_cmd646_device); /* Input port bit 2 must be 1 or CMOS Setup is disabled. */ - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_device); return ret; } +static const device_config_t ficpo6000_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "405F03C", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, /*W1*/ + .bios = { + { .name = "PhoenixBIOS 4.05 - Revision 405F03C (CD-ROM Boot support)", .internal_name = "405F03C", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/ficpo6000/405F03C.ROM", "" } }, + { .name = "PhoenixBIOS 4.05 - Revision 405F05C (No CD-ROM Boot support)", .internal_name = "405F05C", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/ficpo6000/405F05C.ROM", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t ficpo6000_device = { + .name = "FIC PO-6000", + .internal_name = "ficpo6000_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = ficpo6000_config +}; + int -machine_at_686nx_init(const machine_t *model) +machine_at_ficpo6000_init(const machine_t *model) { - int ret; + int ret = 0; + const char* fn; - ret = bios_load_linear("roms/machines/686nx/6nx.140", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) + /* No ROMs available */ + if (!device_available(model->device)) return ret; - machine_at_common_init(model); + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + machine_at_common_init_ex(model, 2); pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); - device_add(&i440fx_device); - device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); // Uses the AMIKEY keyboard controller - device_add_params(&um8669f_device, (void *) 0); - device_add(&intel_flash_bxt_device); - - return ret; -} - -int -machine_at_mb600n_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/mb600n/60915cs.rom", - 0x000e0000, 131072, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); - device_add(&i440fx_device); - device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c669_device, (void *) 0); + pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x14, PCI_CARD_NORTHBRIDGE_SEC, 0, 0, 0, 0); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x03, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0c, PCI_CARD_IDE, 0, 0, 0, 0); + device_add(&i450kx_device); + device_add(&sio_zb_device); + device_add(&ide_cmd646_device); + /* Input port bit 2 must be 1 or CMOS Setup is disabled. */ + device_add_params(&pc87306_device, (void *) PCX730X_PHOENIX_42); device_add(&intel_flash_bxt_device); return ret; } +/* i440FX */ int machine_at_acerv60n_init(const machine_t *model) { @@ -196,11 +209,27 @@ machine_at_acerv60n_init(const machine_t *model) } int -machine_at_lgibmx61_init(const machine_t *model) +machine_at_p65up5_cp6nd_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/lgibmx61/bios.rom", + ret = bios_load_linear("roms/machines/p65up5/ND6I0218.AWD", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_p65up5_common_init(model, &i440fx_device); + + return ret; +} + +int +machine_at_8600ttc_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/8600ttc/TTC0715B.ROM", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -211,51 +240,15 @@ machine_at_lgibmx61_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i440fx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_device); - device_add_params(&w83877_device, (void *) (W83877F | W83877_250)); - device_add(&sst_flash_29ee010_device); - - return ret; -} - -int -machine_at_vs440fx_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear_combined2("roms/machines/vs440fx/1018CS1_.BIO", - "roms/machines/vs440fx/1018CS1_.BI1", - "roms/machines/vs440fx/1018CS1_.BI2", - "roms/machines/vs440fx/1018CS1_.BI3", - "roms/machines/vs440fx/1018CS1_.RCV", - 0x3a000, 128); - - if (bios_only || !ret) - return ret; - - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&i440fx_device); - device_add(&piix3_device); - device_add_params(&pc87307_device, (void *) (PCX730X_AMI | PCX7307_PC87307)); - - device_add(&intel_flash_bxt_ami_device); - - if (sound_card_current[0] == SOUND_INTERNAL) - device_add(machine_get_snd_device(machine)); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c669_device, (void *) 0); + device_add(&intel_flash_bxt_device); return ret; } @@ -332,6 +325,35 @@ machine_at_gw2kvenus_init(const machine_t *model) return ret; } +int +machine_at_686nx_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/686nx/6nx.140", + 0x000e0000, 131072, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + device_add(&i440fx_device); + device_add(&piix3_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&um8669f_device, (void *) 0); + device_add(&intel_flash_bxt_device); + + return ret; +} + int machine_at_ap440fx_init(const machine_t *model) { @@ -371,11 +393,47 @@ machine_at_ap440fx_init(const machine_t *model) } int -machine_at_8600ttc_init(const machine_t *model) +machine_at_vs440fx_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/8600ttc/TTC0715B.ROM", + ret = bios_load_linear_combined2("roms/machines/vs440fx/1018CS1_.BIO", + "roms/machines/vs440fx/1018CS1_.BI1", + "roms/machines/vs440fx/1018CS1_.BI2", + "roms/machines/vs440fx/1018CS1_.BI3", + "roms/machines/vs440fx/1018CS1_.RCV", + 0x3a000, 128); + + if (bios_only || !ret) + return ret; + + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x0B, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + device_add(&i440fx_device); + device_add(&piix3_device); + device_add_params(&pc87307_device, (void *) (PCX730X_AMI | PCX7307_PC87307)); + + device_add(&intel_flash_bxt_ami_device); + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(machine_get_snd_device(machine)); + + return ret; +} + +int +machine_at_lgibmx61_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/lgibmx61/bios.rom", 0x000e0000, 131072, 0); if (bios_only || !ret) @@ -386,15 +444,15 @@ machine_at_8600ttc_init(const machine_t *model) pci_init(PCI_CONFIG_TYPE_1); pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i440fx_device); device_add(&piix3_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&fdc37c669_device, (void *) 0); - device_add(&intel_flash_bxt_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&w83877_device, (void *) (W83877F | W83877_250)); + device_add(&sst_flash_29ee010_device); return ret; } @@ -427,39 +485,31 @@ machine_at_m6mi_init(const machine_t *model) return ret; } -void -machine_at_p65up5_common_init(const machine_t *model, const device_t *northbridge) -{ - machine_at_common_init(model); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3); - pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3); - device_add(northbridge); - device_add(&piix3_ioapic_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0)); - device_add(&sst_flash_29ee010_device); - device_add(&ioapic_device); -} - int -machine_at_p65up5_cp6nd_init(const machine_t *model) +machine_at_mb600n_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/p65up5/ND6I0218.AWD", + ret = bios_load_linear("roms/machines/mb600n/60915cs.rom", 0x000e0000, 131072, 0); if (bios_only || !ret) return ret; - machine_at_p65up5_common_init(model, &i440fx_device); + machine_at_common_init(model); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x14, PCI_CARD_NORMAL, 4, 1, 2, 3); + device_add(&i440fx_device); + device_add(&piix3_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c669_device, (void *) 0); + device_add(&intel_flash_bxt_device); return ret; } diff --git a/src/machine/m_at_sockets7.c b/src/machine/m_at_sockets7.c index 28d3033fb..a39b2cef4 100644 --- a/src/machine/m_at_sockets7.c +++ b/src/machine/m_at_sockets7.c @@ -8,11 +8,9 @@ * * Implementation of Super Socket 7 machines. * - * - * * Authors: Miran Grca, * - * Copyright 2016-2020 Miran Grca. + * Copyright 2016-2025 Miran Grca. */ #include #include @@ -40,6 +38,7 @@ #include <86box/snd_ac97.h> #include <86box/clock.h> +/* ALi ALADDiN V */ int machine_at_p5a_init(const machine_t *model) { @@ -207,6 +206,7 @@ machine_at_5ax_init(const machine_t *model) return ret; } +/* VIA MVP3 */ int machine_at_ax59pro_init(const machine_t *model) { @@ -231,7 +231,6 @@ machine_at_ax59pro_init(const machine_t *model) device_add(&via_mvp3_device); device_add(&via_vt82c586b_device); - device_add(&kbc_ps2_pci_device); device_add_params(&w83877_device, (void *) (W83877TF | W83877_250)); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); @@ -239,6 +238,37 @@ machine_at_ax59pro_init(const machine_t *model) return ret; } +int +machine_at_delhi3_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/delhi3/DELHI3.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_common_init_ex(model, 2); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); + pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); + + device_add(&via_mvp3_device); + device_add(&via_vt82c596a_device); + device_add_params(&w83877_device, (void *) (W83877TF | W83877_250)); + device_add(&sst_flash_39sf020_device); + spd_register(SPD_TYPE_SDRAM, 0x3, 256); + + if ((sound_card_current[0] == SOUND_INTERNAL) && machine_get_snd_device(machine)) + device_add(machine_get_snd_device(machine)); + + return ret; +} + int machine_at_mvp3_init(const machine_t *model) { @@ -262,7 +292,6 @@ machine_at_mvp3_init(const machine_t *model) device_add(&via_mvp3_device); device_add(&via_vt82c586b_device); - device_add(&kbc_ps2_pci_device); device_add_params(&w83877_device, (void *) (W83877TF | W83877_3F0)); device_add(&sst_flash_39sf010_device); spd_register(SPD_TYPE_SDRAM, 0x3, 256); @@ -294,7 +323,6 @@ machine_at_ficva503a_init(const machine_t *model) device_add(&via_mvp3_device); device_add(&via_vt82c686a_device); /* fans: CPU1, Chassis; temperatures: CPU, System, unused */ - device_add(&kbc_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); hwm_values.temperatures[0] += 2; /* CPU offset */ @@ -332,7 +360,6 @@ machine_at_5emapro_init(const machine_t *model) device_add(&via_mvp3_device); /* Rebranded as EQ82C6638 */ device_add(&via_vt82c686a_device); - device_add(&kbc_ps2_ami_pci_device); device_add(&sst_flash_39sf010_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); device_add(&via_vt82c686_hwm_device); /* fans: CPU1, Chassis; temperatures: CPU, System, unused */ @@ -343,38 +370,7 @@ machine_at_5emapro_init(const machine_t *model) return ret; } -int -machine_at_delhi3_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/delhi3/DELHI3.ROM", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_common_init_ex(model, 2); - - pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 3, 4); - pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 3, 4, 1); - - device_add(&via_mvp3_device); - device_add(&via_vt82c596a_device); - device_add(&kbc_ps2_ami_pci_device); - device_add_params(&w83877_device, (void *) (W83877TF | W83877_250)); - device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); - - if ((sound_card_current[0] == SOUND_INTERNAL) && machine_get_snd_device(machine)) - device_add(machine_get_snd_device(machine)); - - return ret; -} - +/* SiS 5591 */ int machine_at_5sg100_init(const machine_t *model) { @@ -397,7 +393,6 @@ machine_at_5sg100_init(const machine_t *model) pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x02, PCI_CARD_AGPBRIDGE, 0, 0, 0, 0); device_add(&sis_5591_1997_device); - device_add(&kbc_ps2_ami_pci_device); device_add_params(&w83877_device, (void *) (W83877TF | W83877_3F0)); device_add(&sst_flash_29ee010_device); diff --git a/src/machine/m_at_t3100e.c b/src/machine/m_at_t3100e.c index 92daa610c..4919f4975 100644 --- a/src/machine/m_at_t3100e.c +++ b/src/machine/m_at_t3100e.c @@ -117,15 +117,13 @@ * bit 2 set for single-pixel LCD font * bits 0,1 for display font * - * - * - * Authors: Fred N. van Kempen, + * Authors: John Elliott, + * Fred N. van Kempen, * Miran Grca, - * John Elliott, * - * Copyright 2017-2018 Fred N. van Kempen. - * Copyright 2016-2018 Miran Grca. - * Copyright 2008-2018 John Elliott. + * Copyright 2008-2025 John Elliott. + * Copyright 2017-2025 Fred N. van Kempen. + * Copyright 2016-2025 Miran Grca. * * 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 @@ -796,6 +794,12 @@ upper_write_raml(uint32_t addr, uint32_t val, void *priv) *(uint32_t *) &ram[addr] = val; } +uint8_t +machine_t3100e_p1_handler(void) +{ + return (t3100e_mono_get() & 1) ? 0xff : 0xbf; +} + int machine_at_t3100e_init(const machine_t *model) { @@ -813,11 +817,10 @@ machine_at_t3100e_init(const machine_t *model) machine_at_common_ide_init(model); - device_add(&kbc_at_toshiba_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); - if (fdc_current[0] == FDC_INTERNAL) { + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - } /* Hook up system control port */ io_sethandler(0x8084, 0x0001, diff --git a/src/machine/m_europc.c b/src/machine/m_europc.c index 4f3a3b8ff..d85563241 100644 --- a/src/machine/m_europc.c +++ b/src/machine/m_europc.c @@ -625,7 +625,7 @@ europc_boot(UNUSED(const device_t *info)) mouse_bus_set_irq(sys->mouse, 2); /* Configure the port for (Bus Mouse Compatible) Mouse. */ b |= 0x01; - } else if (joystick_type) + } else if (joystick_type[0]) b |= 0x02; /* enable port as joysticks */ sys->nvr.regs[MRTC_CONF_C] = b; diff --git a/src/machine/m_ps1.c b/src/machine/m_ps1.c index cce0b9d00..c8973cbb1 100644 --- a/src/machine/m_ps1.c +++ b/src/machine/m_ps1.c @@ -395,13 +395,22 @@ ps1_common_init(const machine_t *model) dma16_init(); pic2_init(); - device_add(&kbc_ps2_ps1_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&port_6x_device); /* Audio uses ports 200h and 202-207h, so only initialize gameport on 201h. */ standalone_gameport_type = &gameport_201_device; } +uint8_t +machine_ps1_p1_handler(void) +{ + const uint8_t current_drive = fdc_get_current_drive(); + + /* (B0 or F0) | (fdd_is_525(current_drive) on bit 6) */ + return 0xb0 | (fdd_is_525(current_drive) ? 0x40 : 0x00); +} + int machine_ps1_m2011_init(const machine_t *model) { diff --git a/src/machine/m_ps2_isa.c b/src/machine/m_ps2_isa.c index b8114622b..d768975d5 100644 --- a/src/machine/m_ps2_isa.c +++ b/src/machine/m_ps2_isa.c @@ -201,7 +201,7 @@ ps2_isa_common_init(const machine_t *model) dma16_init(); pic2_init(); - device_add(&kbc_ps2_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&port_6x_ps2_device); } diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index 42fe64cf8..e8be93038 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -1160,7 +1160,6 @@ ps2_mca_board_model_50_init(void) mem_remap_top(384); mca_init(4); - device_add(&kbc_ps2_mca_2_device); ps2.planar_read = model_50_read; ps2.planar_write = model_50_write; @@ -1181,7 +1180,6 @@ ps2_mca_board_model_60_init(void) mem_remap_top(384); mca_init(8); - device_add(&kbc_ps2_mca_2_device); ps2.planar_read = model_50_read; ps2.planar_write = model_50_write; @@ -1241,7 +1239,6 @@ ps2_mca_board_model_55sx_init(int has_sec_nvram, int slots) } mca_init(slots); - device_add(&kbc_ps2_mca_1_device); if (has_sec_nvram) device_add(&ps2_nvr_55ls_device); @@ -1420,7 +1417,6 @@ ps2_mca_board_model_70_type34_init(int is_type4, int slots) ps2.split_addr = mem_size * 1024; mca_init(slots); - device_add(&kbc_ps2_mca_1_device); ps2.planar_read = model_70_type3_read; ps2.planar_write = model_70_type3_write; @@ -1513,7 +1509,6 @@ ps2_mca_board_model_80_type2_init(void) ps2.split_addr = mem_size * 1024; mca_init(8); - device_add(&kbc_ps2_mca_1_device); ps2.planar_read = model_80_read; ps2.planar_write = model_80_write; @@ -1628,6 +1623,8 @@ machine_ps2_model_50_init(const machine_t *model) ps2.planar_id = 0xfbff; ps2_mca_board_model_50_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1651,6 +1648,8 @@ machine_ps2_model_60_init(const machine_t *model) ps2.planar_id = 0xf7ff; ps2_mca_board_model_60_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1671,6 +1670,8 @@ machine_ps2_model_55sx_init(const machine_t *model) ps2.planar_id = 0xfbff; ps2_mca_board_model_55sx_init(0, 4); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1691,6 +1692,8 @@ machine_ps2_model_65sx_init(const machine_t *model) ps2.planar_id = 0xe3ff; ps2_mca_board_model_55sx_init(1, 8); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1711,6 +1714,8 @@ machine_ps2_model_70_type3_init(const machine_t *model) ps2.planar_id = 0xf9ff; ps2_mca_board_model_70_type34_init(0, 4); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1731,6 +1736,8 @@ machine_ps2_model_80_init(const machine_t *model) ps2.planar_id = 0xfdff; ps2_mca_board_model_80_type2_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1751,6 +1758,8 @@ machine_ps2_model_80_axx_init(const machine_t *model) ps2.planar_id = 0xfff9; ps2_mca_board_model_70_type34_init(0, 8); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1771,6 +1780,8 @@ machine_ps2_model_70_type4_init(const machine_t *model) ps2.planar_id = 0xf9ff; ps2_mca_board_model_70_type34_init(1, 4); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1782,7 +1793,6 @@ ps55_mca_board_model_50t_init(void) ps2.split_addr = mem_size * 1024; /* The slot 5 is reserved for the Integrated Fixed Disk II (an internal ESDI hard drive). */ mca_init(5); - device_add(&kbc_ps2_mca_1_device); ps2.planar_read = ps55_model_50t_read; ps2.planar_write = ps55_model_50tv_write; @@ -1826,7 +1836,6 @@ ps55_mca_board_model_50v_init(void) ps2.split_addr = mem_size * 1024; /* The slot 5 is reserved for the Integrated Fixed Disk II (an internal ESDI hard drive). */ mca_init(5); - device_add(&kbc_ps2_mca_1_device); ps2.planar_read = ps55_model_50v_read; ps2.planar_write = ps55_model_50tv_write; @@ -1878,7 +1887,7 @@ ps55_mca_board_model_50v_init(void) } int -machine_ps55_model_50t_init(const machine_t* model) +machine_ps55_model_50t_init(const machine_t *model) { int ret; @@ -1903,11 +1912,13 @@ machine_ps55_model_50t_init(const machine_t* model) ps2.planar_id = 0xffee; ps55_mca_board_model_50t_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } int -machine_ps55_model_50v_init(const machine_t* model) +machine_ps55_model_50v_init(const machine_t *model) { int ret; @@ -1928,5 +1939,7 @@ machine_ps55_model_50v_init(const machine_t* model) ps2.planar_id = 0xf1ff; ps55_mca_board_model_50v_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } diff --git a/src/machine/m_xt.c b/src/machine/m_xt.c index a77694f36..954483d62 100644 --- a/src/machine/m_xt.c +++ b/src/machine/m_xt.c @@ -6,18 +6,16 @@ * * This file is part of the 86Box distribution. * - * Standard PC/AT implementation. + * Implementation of PC and XT machines. * - * - * - * Authors: Fred N. van Kempen, + * Authors: Sarah Walker, * Miran Grca, - * Sarah Walker, + * Fred N. van Kempen, * Jasmine Iwanek, * - * Copyright 2017-2020 Fred N. van Kempen. - * Copyright 2016-2020 Miran Grca. - * Copyright 2008-2020 Sarah Walker. + * Copyright 2008-2025 Sarah Walker. + * Copyright 2016-2025 Miran Grca. + * Copyright 2017-2025 Fred N. van Kempen. * Copyright 2025 Jasmine Iwanek. */ #include @@ -33,8 +31,11 @@ #include <86box/fdd.h> #include <86box/fdc.h> #include <86box/fdc_ext.h> +#include <86box/lpt.h> #include <86box/hdc.h> #include <86box/gameport.h> +#include <86box/serial.h> +#include <86box/sio.h> #include <86box/ibm_5161.h> #include <86box/keyboard.h> #include <86box/rom.h> @@ -46,6 +47,7 @@ extern const device_t vendex_xt_rtc_onboard_device; +/* 8088 */ static void machine_xt_common_init(const machine_t *model, int fixed_floppy) { @@ -123,7 +125,7 @@ const device_t ibmpc_device = { }; int -machine_pc_init(const machine_t *model) +machine_ibmpc_init(const machine_t *model) { int ret = 0; int ret2; @@ -233,7 +235,7 @@ const device_t ibmpc82_device = { }; int -machine_pc82_init(const machine_t *model) +machine_ibmpc82_init(const machine_t *model) { int ret = 0; int ret2; @@ -401,7 +403,7 @@ const device_t ibmxt_device = { }; int -machine_xt_init(const machine_t *model) +machine_ibmxt_init(const machine_t *model) { int ret = 0; uint8_t enable_5161; @@ -451,24 +453,6 @@ machine_xt_init(const machine_t *model) return ret; } -int -machine_genxt_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/genxt/pcxt.rom", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - device_add(&kbc_xt_device); - - machine_xt_common_init(model, 0); - - return ret; -} - static const device_config_t ibmxt86_config[] = { // clang-format off { @@ -585,7 +569,7 @@ const device_t ibmxt86_device = { }; int -machine_xt86_init(const machine_t *model) +machine_ibmxt86_init(const machine_t *model) { int ret = 0; uint8_t enable_5161; @@ -669,39 +653,14 @@ machine_xt_amixt_init(const machine_t *model) return ret; } -int -machine_xt_tuliptc8_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tuliptc8/tulip-bios_xt_compact_2.bin", - 0x000fc000, 16384, 0); - - if (bios_only || !ret) - return ret; - - device_add(&kbc_xt_fe2010_device); - - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_at_device); - - machine_common_init(model); - - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - - nmi_init(); - standalone_gameport_type = &gameport_200_device; - - device_add(&amstrad_megapc_nvr_device); - - return ret; -} - -// TODO -// Onboard EGA Graphics (NSI Logic EVC315-S on early boards STMicroelectronics EGA on later revisions) -// RTC -// Adaptec ACB-2072 RLL Controller Card (Optional) -// Atari PCM1 Mouse Support +/* + TODO: + - Onboard EGA Graphics (NSI Logic EVC315-S on early boards + STMicroelectronics EGA on later revisions); + - RTC; + - Adaptec ACB-2072 RLL Controller Card (Optional); + - Atari PCM1 Mouse Support. + */ int machine_xt_ataripc3_init(const machine_t *model) { @@ -723,11 +682,11 @@ machine_xt_ataripc3_init(const machine_t *model) } int -machine_xt_znic_init(const machine_t *model) +machine_xt_bw230_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/znic/ibmzen.rom", + ret = bios_load_linear("roms/machines/bw230/bondwell.bin", 0x000fe000, 8192, 0); if (bios_only || !ret) @@ -738,6 +697,53 @@ machine_xt_znic_init(const machine_t *model) return ret; } +int +machine_xt_mpc1600_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/mpc1600/mpc4.34_merged.bin", + 0x000fc000, 16384, 0); + + if (bios_only || !ret) + return ret; + + device_add(&kbc_pc82_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_xt_compaq_portable_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/portable/compaq portable plus 100666-001 rev c u47.bin", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + machine_common_init(model); + + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); + + device_add(&kbc_xt_compaq_device); + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_xt_device); + nmi_init(); + if (joystick_type[0]) + device_add(&gameport_200_device); + + lpt_t *lpt = device_add_inst(&lpt_port_device, 1); + lpt_port_setup(lpt, LPT_MDA_ADDR); + lpt_set_3bc_used(1); + + return ret; +} + int machine_xt_dtk_init(const machine_t *model) { @@ -754,6 +760,124 @@ machine_xt_dtk_init(const machine_t *model) return ret; } +int +machine_xt_pcspirit_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pcspirit/u1101.bin", + 0x000fe000, 16384, 0); + + if (ret) { + bios_load_aux_linear("roms/machines/pcspirit/u1103.bin", + 0x000fc000, 8192, 0); + } + + if (bios_only || !ret) + return ret; + + device_add(&kbc_pc82_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_genxt_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/genxt/pcxt.rom", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + device_add(&kbc_xt_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_xt_glabios_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/glabios/GLABIOS_0.4.0_8X.ROM", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + device_add(&kbc_xt_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_xt_top88_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/top88/Hyosung Topstar 88T - BIOS version 3.0.bin", + 0x000fc000, 16384, 0); + + if (bios_only || !ret) + return ret; + + /* On-board FDC cannot be disabled */ + machine_xt_clone_init(model, 1); + + return ret; +} + +static void +machine_xt_hyundai_common_init(const machine_t *model, int fixed_floppy) +{ + device_add(&kbc_xt_hyundai_device); + + machine_xt_common_init(model, fixed_floppy); +} + +int +machine_xt_super16t_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/super16t/Hyundai SUPER-16T - System BIOS HEA v1.12Ta (16k)(MBM27128)(1986).BIN", + 0x000fc000, 16384, 0); + + if (bios_only || !ret) + return ret; + + /* On-board FDC cannot be disabled */ + machine_xt_hyundai_common_init(model, 1); + + return ret; +} + +int +machine_xt_super16te_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/super16te/Hyundai SUPER-16TE - System BIOS v2.00Id (16k)(D27128A)(1989).BIN", + 0x000fc000, 16384, 0); + + if (bios_only || !ret) + return ret; + + /* On-board FDC cannot be disabled */ + machine_xt_hyundai_common_init(model, 1); + + return ret; +} + static const device_config_t jukopc_config[] = { // clang-format off { @@ -816,6 +940,92 @@ machine_xt_jukopc_init(const machine_t *model) return ret; } +int +machine_xt_kaypropc_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/kaypropc/Kaypro_v2.03K.bin", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + machine_xt_clone_init(model, 0); + + return ret; +} + +int +machine_xt_micoms_xl7turbo_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/mxl7t/XL7_TURBO.BIN", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + device_add(&kbc_xt_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_xt_pc500_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc500/rom404.bin", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + device_add(&kbc_pc_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_xt_pc700_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc700/multitech pc-700 3.1.bin", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + device_add(&kbc_pc_device); + + machine_xt_common_init(model, 0); + + return ret; +} + +int +machine_xt_pc4i_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc4i/NCR_PC4i_BIOSROM_1985.BIN", + 0x000fc000, 16384, 0); + + if (bios_only || !ret) + return ret; + + machine_xt_clone_init(model, 0); + + return ret; +} + int machine_xt_openxt_init(const machine_t *model) { @@ -832,22 +1042,39 @@ machine_xt_openxt_init(const machine_t *model) return ret; } +static void +machine_xt_philips_common_init(const machine_t *model) +{ + machine_common_init(model); + + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); + + nmi_init(); + + standalone_gameport_type = &gameport_200_device; + + device_add(&kbc_pc_device); + + device_add(&philips_device); + + device_add(&xta_hd20_device); +} + int -machine_xt_pcxt_init(const machine_t *model) +machine_xt_p3105_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/pcxt/u18.rom", - 0x000f8000, 65536, 0); - if (ret) { - bios_load_aux_linear("roms/machines/pcxt/u19.rom", - 0x000f0000, 32768, 0); - } + ret = bios_load_linear("roms/machines/p3105/philipsnms9100.bin", + 0x000fc000, 16384, 0); if (bios_only || !ret) return ret; - machine_xt_clone_init(model, 0); + machine_xt_philips_common_init(model); + + /* On-board FDC cannot be disabled */ + device_add(&fdc_xt_device); return ret; } @@ -870,52 +1097,6 @@ machine_xt_pxxt_init(const machine_t *model) return ret; } -int -machine_xt_iskra3104_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/iskra3104/198.bin", - "roms/machines/iskra3104/199.bin", - 0x000fc000, 16384, 0); - - if (bios_only || !ret) - return ret; - - machine_xt_clone_init(model, 0); - - return ret; -} - -int -machine_xt_maz1016_init(const machine_t *model) -{ - int ret; - - ret = bios_load_interleaved("roms/machines/maz1016/e1.bin", - "roms/machines/maz1016/e4.bin", - 0x000fc000, 49152, 0); - - if (ret) { - bios_load_aux_interleaved("roms/machines/maz1016/e2.bin", - "roms/machines/maz1016/e5.bin", - 0x000f8000, 16384, 0); - - bios_load_aux_interleaved("roms/machines/maz1016/e3.bin", - "roms/machines/maz1016/e6b.bin", - 0x000f4000, 16384, 0); - } - - if (bios_only || !ret) - return ret; - - loadfont("roms/machines/maz1016/crt-8.bin", 0); - - machine_xt_clone_init(model, 0); - - return ret; -} - int machine_xt_pravetz16_imko4_init(const machine_t *model) { @@ -969,29 +1150,11 @@ machine_xt_pravetz16s_cpu12p_init(const machine_t *model) } int -machine_xt_micoms_xl7turbo_init(const machine_t *model) +machine_xt_pb8810_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/mxl7t/XL7_TURBO.BIN", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - device_add(&kbc_xt_device); - - machine_xt_common_init(model, 0); - - return ret; -} - -int -machine_xt_pc4i_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pc4i/NCR_PC4i_BIOSROM_1985.BIN", + ret = bios_load_linear("roms/machines/pb8810/pb8088-8810-633acc631aba0345517682.bin", 0x000fc000, 16384, 0); if (bios_only || !ret) @@ -1003,78 +1166,38 @@ machine_xt_pc4i_init(const machine_t *model) } int -machine_xt_mpc1600_init(const machine_t *model) +machine_xt_sansx16_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/mpc1600/mpc4.34_merged.bin", + ret = bios_load_linear("roms/machines/sansx16/tmm27128ad.bin.bin", 0x000fc000, 16384, 0); if (bios_only || !ret) return ret; - device_add(&kbc_pc82_device); - - machine_xt_common_init(model, 0); + /* On-board FDC cannot be disabled */ + machine_xt_clone_init(model, 1); return ret; } int -machine_xt_pcspirit_init(const machine_t *model) +machine_xt_pcxt_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/pcspirit/u1101.bin", - 0x000fe000, 16384, 0); - + ret = bios_load_linear("roms/machines/pcxt/u18.rom", + 0x000f8000, 65536, 0); if (ret) { - bios_load_aux_linear("roms/machines/pcspirit/u1103.bin", - 0x000fc000, 8192, 0); + bios_load_aux_linear("roms/machines/pcxt/u19.rom", + 0x000f0000, 32768, 0); } if (bios_only || !ret) return ret; - device_add(&kbc_pc82_device); - - machine_xt_common_init(model, 0); - - return ret; -} - -int -machine_xt_pc700_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pc700/multitech pc-700 3.1.bin", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - device_add(&kbc_pc_device); - - machine_xt_common_init(model, 0); - - return ret; -} - -int -machine_xt_pc500_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/pc500/rom404.bin", - 0x000f8000, 32768, 0); - - if (bios_only || !ret) - return ret; - - device_add(&kbc_pc_device); - - machine_xt_common_init(model, 0); + machine_xt_clone_init(model, 0); return ret; } @@ -1144,70 +1267,45 @@ machine_xt_vendex_init(const machine_t *model) } static void -machine_xt_hyundai_common_init(const machine_t *model, int fixed_floppy) +machine_xt_laserxt_common_init(const machine_t *model,int is_lxt3) { - device_add(&kbc_xt_hyundai_device); + machine_common_init(model); - machine_xt_common_init(model, fixed_floppy); + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_xt_device); + + nmi_init(); + standalone_gameport_type = &gameport_200_device; + + device_add(is_lxt3 ? &lxt3_device : &laserxt_device); + + device_add(&kbc_xt_lxt3_device); } int -machine_xt_super16t_init(const machine_t *model) +machine_xt_laserxt_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/super16t/Hyundai SUPER-16T - System BIOS HEA v1.12Ta (16k)(MBM27128)(1986).BIN", - 0x000fc000, 16384, 0); + ret = bios_load_linear("roms/machines/ltxt/27c64.bin", + 0x000fe000, 8192, 0); if (bios_only || !ret) return ret; - /* On-board FDC cannot be disabled */ - machine_xt_hyundai_common_init(model, 1); + machine_xt_laserxt_common_init(model, 0); return ret; } int -machine_xt_super16te_init(const machine_t *model) +machine_xt_znic_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/super16te/Hyundai SUPER-16TE - System BIOS v2.00Id (16k)(D27128A)(1989).BIN", - 0x000fc000, 16384, 0); - - if (bios_only || !ret) - return ret; - - /* On-board FDC cannot be disabled */ - machine_xt_hyundai_common_init(model, 1); - - return ret; -} - -int -machine_xt_top88_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/top88/Hyosung Topstar 88T - BIOS version 3.0.bin", - 0x000fc000, 16384, 0); - - if (bios_only || !ret) - return ret; - - /* On-board FDC cannot be disabled */ - machine_xt_clone_init(model, 1); - - return ret; -} - -int -machine_xt_kaypropc_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/kaypropc/Kaypro_v2.03K.bin", + ret = bios_load_linear("roms/machines/znic/ibmzen.rom", 0x000fe000, 8192, 0); if (bios_only || !ret) @@ -1218,39 +1316,129 @@ machine_xt_kaypropc_init(const machine_t *model) return ret; } +static void +machine_zenith_common_init(const machine_t *model) +{ + machine_common_init(model); + + device_add(&zenith_scratchpad_device); + + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); + + device_add(&kbc_xt_zenith_device); + + nmi_init(); +} + int -machine_xt_sansx16_init(const machine_t *model) +machine_xt_z151_init(const machine_t *model) { int ret; - - ret = bios_load_linear("roms/machines/sansx16/tmm27128ad.bin.bin", - 0x000fc000, 16384, 0); + ret = bios_load_linear("roms/machines/zdsz151/444-229-18.bin", + 0x000fc000, 32768, 0); + if (ret) { + bios_load_aux_linear("roms/machines/zdsz151/444-260-18.bin", + 0x000f8000, 16384, 0); + } if (bios_only || !ret) return ret; - /* On-board FDC cannot be disabled */ - machine_xt_clone_init(model, 1); + machine_zenith_common_init(model); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_xt_tandy_device); return ret; } +/* + * Current bugs and limitations: + * - Memory board support for EMS currently missing + */ int -machine_xt_bw230_init(const machine_t *model) +machine_xt_z159_init(const machine_t *model) { - int ret; + lpt_t *lpt = NULL; + int ret; - ret = bios_load_linear("roms/machines/bw230/bondwell.bin", - 0x000fe000, 8192, 0); + ret = bios_load_linear("roms/machines/zdsz159/z159m v2.9e.10d", + 0x000f8000, 32768, 0); if (bios_only || !ret) return ret; - machine_xt_clone_init(model, 0); + machine_zenith_common_init(model); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_xt_tandy_device); + + /* parallel port is on the memory board */ + lpt = device_add_inst(&lpt_port_device, 1); + lpt_port_remove(lpt); + lpt_port_setup(lpt, LPT2_ADDR); + lpt_set_next_inst(255); return ret; } +/* + * Current bugs and limitations: + * - missing NVRAM implementation + */ +int +machine_xt_z184_init(const machine_t *model) +{ + lpt_t *lpt = NULL; + int ret; + + ret = bios_load_linear("roms/machines/zdsupers/z184m v3.1d.10d", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + machine_zenith_common_init(model); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_xt_device); + + lpt = device_add_inst(&lpt_port_device, 1); + lpt_port_remove(lpt); + lpt_port_setup(lpt, LPT2_ADDR); + lpt_set_next_inst(255); + + device_add(&ns8250_device); + /* So that serial_standalone_init() won't do anything. */ + serial_set_next_inst(SERIAL_MAX - 1); + + device_add(&cga_device); + + return ret; +} + +/* GC100A */ +int +machine_xt_p3120_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/p3120/philips_p3120.bin", + 0x000f8000, 32768, 0); + + if (bios_only || !ret) + return ret; + + machine_xt_philips_common_init(model); + + device_add(&gc100a_device); + + device_add(&fdc_at_device); + + return ret; +} + +/* V20 */ int machine_xt_v20xt_init(const machine_t *model) { @@ -1268,35 +1456,143 @@ machine_xt_v20xt_init(const machine_t *model) } int -machine_xt_pb8810_init(const machine_t *model) +machine_xt_tuliptc8_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/pb8810/pb8088-8810-633acc631aba0345517682.bin", + ret = bios_load_linear("roms/machines/tuliptc8/tulip-bios_xt_compact_2.bin", 0x000fc000, 16384, 0); if (bios_only || !ret) return ret; + device_add(&kbc_xt_fe2010_device); + + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_at_device); + + machine_common_init(model); + + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); + + nmi_init(); + standalone_gameport_type = &gameport_200_device; + + device_add(&amstrad_megapc_nvr_device); + + return ret; +} + +/* 8086 */ +int +machine_xt_compaq_deskpro_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/deskpro/Compaq - BIOS - Revision J - 106265-002.bin", + 0x000fe000, 8192, 0); + + if (bios_only || !ret) + return ret; + + machine_common_init(model); + + pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); + + device_add(&kbc_xt_compaq_device); + if (fdc_current[0] == FDC_INTERNAL) + device_add(&fdc_xt_device); + nmi_init(); + standalone_gameport_type = &gameport_200_device; + + lpt_t *lpt = device_add_inst(&lpt_port_device, 1); + lpt_port_setup(lpt, LPT_MDA_ADDR); + lpt_set_3bc_used(1); + + return ret; +} + +int +machine_xt_pc5086_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/pc5086/sys_rom.bin", + 0x000f0000, 65536, 0); + + if (bios_only || !ret) + return ret; + + machine_common_init(model); + + device_add(&ct_82c100_device); + device_add(&f82c710_pc5086_device); + + device_add(&kbc_xt_device); + + device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */ + + return ret; +} + +int +machine_xt_maz1016_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/maz1016/e1.bin", + "roms/machines/maz1016/e4.bin", + 0x000fc000, 49152, 0); + + if (ret) { + bios_load_aux_interleaved("roms/machines/maz1016/e2.bin", + "roms/machines/maz1016/e5.bin", + 0x000f8000, 16384, 0); + + bios_load_aux_interleaved("roms/machines/maz1016/e3.bin", + "roms/machines/maz1016/e6b.bin", + 0x000f4000, 16384, 0); + } + + if (bios_only || !ret) + return ret; + + loadfont("roms/machines/maz1016/crt-8.bin", 0); + + machine_xt_clone_init(model, 0); + + return ret; +} + +int +machine_xt_iskra3104_init(const machine_t *model) +{ + int ret; + + ret = bios_load_interleaved("roms/machines/iskra3104/198.bin", + "roms/machines/iskra3104/199.bin", + 0x000fc000, 16384, 0); + + if (bios_only || !ret) + return ret; + machine_xt_clone_init(model, 0); return ret; } int -machine_xt_glabios_init(const machine_t *model) +machine_xt_lxt3_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/glabios/GLABIOS_0.4.0_8X.ROM", + ret = bios_load_linear("roms/machines/lxt3/27c64d.bin", 0x000fe000, 8192, 0); if (bios_only || !ret) return ret; - device_add(&kbc_xt_device); - - machine_xt_common_init(model, 0); + machine_xt_laserxt_common_init(model, 1); return ret; } diff --git a/src/machine/m_xt_compaq.c b/src/machine/m_xt_compaq.c deleted file mode 100644 index a6f8164f2..000000000 --- a/src/machine/m_xt_compaq.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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. - * - * Emulation of various Compaq XT-class PC's. - * - * - * - * Authors: Sarah Walker, - * Miran Grca, - * TheCollector1995, - * - * Copyright 2008-2019 Sarah Walker. - * Copyright 2016-2019 Miran Grca. - */ -#include -#include -#include -#include -#include <86box/86box.h> -#include "cpu.h" -#include <86box/nmi.h> -#include <86box/timer.h> -#include <86box/pit.h> -#include <86box/mem.h> -#include <86box/rom.h> -#include <86box/device.h> -#include <86box/fdd.h> -#include <86box/fdc.h> -#include <86box/fdc_ext.h> -#include <86box/gameport.h> -#include <86box/keyboard.h> -#include <86box/lpt.h> -#include <86box/machine.h> - -int -machine_xt_compaq_deskpro_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/deskpro/Compaq - BIOS - Revision J - 106265-002.bin", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - machine_common_init(model); - - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - - device_add(&kbc_xt_compaq_device); - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_xt_device); - nmi_init(); - standalone_gameport_type = &gameport_200_device; - - lpt_t *lpt = device_add_inst(&lpt_port_device, 1); - lpt_port_setup(lpt, LPT_MDA_ADDR); - lpt_set_3bc_used(1); - - return ret; -} - -int -machine_xt_compaq_portable_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/portable/compaq portable plus 100666-001 rev c u47.bin", - 0x000fe000, 8192, 0); - - if (bios_only || !ret) - return ret; - - machine_common_init(model); - - pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - - device_add(&kbc_xt_compaq_device); - if (fdc_current[0] == FDC_INTERNAL) - device_add(&fdc_xt_device); - nmi_init(); - if (joystick_type) - device_add(&gameport_200_device); - - lpt_t *lpt = device_add_inst(&lpt_port_device, 1); - lpt_port_setup(lpt, LPT_MDA_ADDR); - lpt_set_3bc_used(1); - - return ret; -} diff --git a/src/machine/m_xt_olivetti.c b/src/machine/m_xt_olivetti.c index ef10ab5dc..079cd4555 100644 --- a/src/machine/m_xt_olivetti.c +++ b/src/machine/m_xt_olivetti.c @@ -2397,7 +2397,7 @@ machine_xt_m240_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); /* io.c logs clearly show it using port 3F7 */ - if (joystick_type) + if (joystick_type[0]) device_add(&gameport_200_device); nmi_init(); diff --git a/src/machine/m_xt_xi8088.c b/src/machine/m_xt_xi8088.c index 0e70893fb..756432405 100644 --- a/src/machine/m_xt_xi8088.c +++ b/src/machine/m_xt_xi8088.c @@ -204,7 +204,7 @@ machine_xt_xi8088_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_ps2_xi8088_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&port_6x_xi8088_device); nmi_init(); device_add(&ibmat_nvr_device); diff --git a/src/machine/machine.c b/src/machine/machine.c index 4bd87ffd9..50b0bb150 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -139,6 +139,10 @@ void machine_init(void) { bios_only = 0; + + machine_set_p1_default(machines[machine].kbc_p1); + machine_set_ps2(); + (void) machine_init_ex(machine); } diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index cf39c7d54..e85f7768d 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -1,2332 +1,2440 @@ -/* - * 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. - * - * Handling of the emulated machines. - * - * Authors: Miran Grca, - * Fred N. van Kempen, - * Jasmine Iwanek, - * - * Copyright 2016-2025 Miran Grca. - * Copyright 2017-2025 Fred N. van Kempen. - * Copyright 2025 Jasmine Iwanek. - */ -#include -#include -#include -#include -#include <86box/86box.h> -#include "cpu.h" -#include <86box/mem.h> -#include <86box/rom.h> -#include <86box/device.h> -#include <86box/machine.h> -#include <86box/timer.h> -#include <86box/fdd.h> -#include <86box/fdc.h> -#include <86box/keyboard.h> -#include <86box/sound.h> -#include <86box/video.h> -#include <86box/plat_unused.h> -#include <86box/thread.h> -#include <86box/network.h> - -// Temporarily here till we move everything out into the right files -extern const device_t pcjr_device; -extern const device_t m19_vid_device; -extern const device_t tandy_1000_video_device; -extern const device_t tandy_1000hx_video_device; -extern const device_t tandy_1000sl_video_device; - -extern const device_t t1000_video_device; -extern const device_t xi8088_device; -extern const device_t cga_device; -extern const device_t vid_1512_device; -extern const device_t vid_1640_device; -extern const device_t vid_pc2086_device; -extern const device_t vid_pc3086_device; -extern const device_t vid_200_device; -extern const device_t vid_ppc512_device; -extern const device_t t1200_video_device; -extern const device_t compaq_plasma_device; -extern const device_t ps1_2011_device; -extern const device_t ibmpc_device; -extern const device_t ibmpc82_device; -extern const device_t ibmxt_device; -extern const device_t ibmxt86_device; -extern const device_t ibmat_device; -extern const device_t ibmxt286_device; -extern const device_t pb450_device; -extern const device_t jukopc_device; -extern const device_t vendex_device; -extern const device_t c5sbm2_device; -extern const device_t sb486pv_device; -extern const device_t ap5s_device; -extern const device_t d842_device; -extern const device_t d943_device; -extern const device_t dells333sl_device; -extern const device_t hot433a_device; -extern const device_t pbl300sx_device; -extern const device_t v12p_device; -extern const device_t f82c710_pc5086_device; - -const machine_filter_t machine_types[] = { - { "None", MACHINE_TYPE_NONE }, - { "[1979] 8088", MACHINE_TYPE_8088 }, - { "[1978] 8086", MACHINE_TYPE_8086 }, - { "[1982] 80286", MACHINE_TYPE_286 }, - { "[1988] i386SX", MACHINE_TYPE_386SX }, - { "[1988] ALi M6117", MACHINE_TYPE_M6117 }, - { "[1992] 486SLC", MACHINE_TYPE_486SLC }, - { "[1985] i386DX", MACHINE_TYPE_386DX }, - { "[1989] i386DX/i486", MACHINE_TYPE_386DX_486 }, - { "[1992] i486 (Socket 168 and 1)", MACHINE_TYPE_486 }, - { "[1992] i486 (Socket 2)", MACHINE_TYPE_486_S2 }, - { "[1994] i486 (Socket 3)", MACHINE_TYPE_486_S3 }, - { "[1994] i486 (Socket 3 PCI)", MACHINE_TYPE_486_S3_PCI }, - { "[1992] i486 (Miscellaneous)", MACHINE_TYPE_486_MISC }, - { "[1993] Socket 4", MACHINE_TYPE_SOCKET4 }, - { "[1994] Socket 5", MACHINE_TYPE_SOCKET5 }, - { "[1995] Socket 7 (Single Voltage)", MACHINE_TYPE_SOCKET7_3V }, - { "[1996] Socket 7 (Dual Voltage)", MACHINE_TYPE_SOCKET7 }, - { "[1998] Super Socket 7", MACHINE_TYPE_SOCKETS7 }, - { "[1995] Socket 8", MACHINE_TYPE_SOCKET8 }, - { "[1997] Slot 1", MACHINE_TYPE_SLOT1 }, - { "[1998] Slot 1/2", MACHINE_TYPE_SLOT1_2 }, - { "[1998] Slot 1/Socket 370", MACHINE_TYPE_SLOT1_370 }, - { "[1998] Slot 2", MACHINE_TYPE_SLOT2 }, - { "[1998] Socket 370", MACHINE_TYPE_SOCKET370 }, - { "Miscellaneous", MACHINE_TYPE_MISC } -}; - -const machine_filter_t machine_chipsets[] = { - { "None", MACHINE_CHIPSET_NONE }, - { "Discrete", MACHINE_CHIPSET_DISCRETE }, - { "Proprietary", MACHINE_CHIPSET_PROPRIETARY }, - { "Headland GC100A", MACHINE_CHIPSET_GC100A }, - { "Headland GC103", MACHINE_CHIPSET_GC103 }, - { "Headland HT18", MACHINE_CHIPSET_HT18 }, - { "ACC 2036", MACHINE_CHIPSET_ACC_2036 }, - { "ACC 2168", MACHINE_CHIPSET_ACC_2168 }, - { "ALi M1217", MACHINE_CHIPSET_ALI_M1217 }, - { "ALi M6117", MACHINE_CHIPSET_ALI_M6117 }, - { "ALi M1409", MACHINE_CHIPSET_ALI_M1409 }, - { "ALi M1429", MACHINE_CHIPSET_ALI_M1429 }, - { "ALi M1429G", MACHINE_CHIPSET_ALI_M1429G }, - { "ALi M1489", MACHINE_CHIPSET_ALI_M1489 }, - { "ALi ALADDiN IV+", MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS }, - { "ALi ALADDiN V", MACHINE_CHIPSET_ALI_ALADDIN_V }, - { "ALi ALADDiN-PRO II", MACHINE_CHIPSET_ALI_ALADDIN_PRO_II }, - { "C&T PC/AT", MACHINE_CHIPSET_CT_AT }, - { "C&T 386/AT", MACHINE_CHIPSET_CT_386 }, - { "C&T 82C235 SCAT", MACHINE_CHIPSET_SCAT }, - { "C&T 82C236 SCATsx", MACHINE_CHIPSET_SCAT_SX }, - { "C&T CS8221 NEAT", MACHINE_CHIPSET_NEAT }, - { "C&T CS8281 NEATsx", MACHINE_CHIPSET_NEAT_SX }, - { "C&T CS4031", MACHINE_CHIPSET_CT_CS4031 }, - { "Contaq 82C596", MACHINE_CHIPSET_CONTAQ_82C596 }, - { "Contaq 82C597", MACHINE_CHIPSET_CONTAQ_82C597 }, - { "IMS 8848", MACHINE_CHIPSET_IMS_8848 }, - { "Intel 82335", MACHINE_CHIPSET_INTEL_82335 }, - { "Intel 420TX", MACHINE_CHIPSET_INTEL_420TX }, - { "Intel 420ZX", MACHINE_CHIPSET_INTEL_420ZX }, - { "Intel 420EX", MACHINE_CHIPSET_INTEL_420EX }, - { "Intel 430LX", MACHINE_CHIPSET_INTEL_430LX }, - { "Intel 430NX", MACHINE_CHIPSET_INTEL_430NX }, - { "Intel 430FX", MACHINE_CHIPSET_INTEL_430FX }, - { "Intel 430HX", MACHINE_CHIPSET_INTEL_430HX }, - { "Intel 430VX", MACHINE_CHIPSET_INTEL_430VX }, - { "Intel 430TX", MACHINE_CHIPSET_INTEL_430TX }, - { "Intel 450KX", MACHINE_CHIPSET_INTEL_450KX }, - { "Intel 440FX", MACHINE_CHIPSET_INTEL_440FX }, - { "Intel 440LX", MACHINE_CHIPSET_INTEL_440LX }, - { "Intel 440EX", MACHINE_CHIPSET_INTEL_440EX }, - { "Intel 440BX", MACHINE_CHIPSET_INTEL_440BX }, - { "Intel 440ZX", MACHINE_CHIPSET_INTEL_440ZX }, - { "Intel 440GX", MACHINE_CHIPSET_INTEL_440GX }, - { "OPTi 283", MACHINE_CHIPSET_OPTI_283 }, - { "OPTi 291", MACHINE_CHIPSET_OPTI_291 }, - { "OPTi 381", MACHINE_CHIPSET_OPTI_381 }, - { "OPTi 391", MACHINE_CHIPSET_OPTI_391 }, - { "OPTi 481", MACHINE_CHIPSET_OPTI_481 }, - { "OPTi 493", MACHINE_CHIPSET_OPTI_493 }, - { "OPTi 495SLC", MACHINE_CHIPSET_OPTI_495SLC }, - { "OPTi 495SX", MACHINE_CHIPSET_OPTI_495SX }, - { "OPTi 498", MACHINE_CHIPSET_OPTI_498 }, - { "OPTi 499", MACHINE_CHIPSET_OPTI_499 }, - { "OPTi 895/802G", MACHINE_CHIPSET_OPTI_895_802G }, - { "OPTi 547/597", MACHINE_CHIPSET_OPTI_547_597 }, - { "SARC RC2016A", MACHINE_CHIPSET_SARC_RC2016A }, - { "SiS 310", MACHINE_CHIPSET_SIS_310 }, - { "SiS 401", MACHINE_CHIPSET_SIS_401 }, - { "SiS 460", MACHINE_CHIPSET_SIS_460 }, - { "SiS 461", MACHINE_CHIPSET_SIS_461 }, - { "SiS 471", MACHINE_CHIPSET_SIS_471 }, - { "SiS 496", MACHINE_CHIPSET_SIS_496 }, - { "SiS 501", MACHINE_CHIPSET_SIS_501 }, - { "SiS 5501", MACHINE_CHIPSET_SIS_5501 }, - { "SiS 5511", MACHINE_CHIPSET_SIS_5511 }, - { "SiS 5571", MACHINE_CHIPSET_SIS_5571 }, - { "SiS 5581", MACHINE_CHIPSET_SIS_5581 }, - { "SiS 5591", MACHINE_CHIPSET_SIS_5591 }, - { "SiS (5)600", MACHINE_CHIPSET_SIS_5600 }, - { "SMSC VictoryBX-66", MACHINE_CHIPSET_SMSC_VICTORYBX_66 }, - { "STPC Client", MACHINE_CHIPSET_STPC_CLIENT }, - { "STPC Consumer-II", MACHINE_CHIPSET_STPC_CONSUMER_II }, - { "STPC Elite", MACHINE_CHIPSET_STPC_ELITE }, - { "STPC Atlas", MACHINE_CHIPSET_STPC_ATLAS }, - { "Symphony SL82C460 Haydn II", MACHINE_CHIPSET_SYMPHONY_SL82C460 }, - { "UMC UM82C480", MACHINE_CHIPSET_UMC_UM82C480 }, - { "UMC UM82C491", MACHINE_CHIPSET_UMC_UM82C491 }, - { "UMC UM8881", MACHINE_CHIPSET_UMC_UM8881 }, - { "UMC UM8890BF", MACHINE_CHIPSET_UMC_UM8890BF }, - { "VIA VT82C495", MACHINE_CHIPSET_VIA_VT82C495 }, - { "VIA VT82C496G", MACHINE_CHIPSET_VIA_VT82C496G }, - { "VIA Apollo VPX", MACHINE_CHIPSET_VIA_APOLLO_VPX }, - { "VIA Apollo VP3", MACHINE_CHIPSET_VIA_APOLLO_VP3 }, - { "VIA Apollo MVP3", MACHINE_CHIPSET_VIA_APOLLO_MVP3 }, - { "VIA Apollo Pro", MACHINE_CHIPSET_VIA_APOLLO_PRO }, - { "VIA Apollo Pro 133", MACHINE_CHIPSET_VIA_APOLLO_PRO_133 }, - { "VIA Apollo Pro 133A", MACHINE_CHIPSET_VIA_APOLLO_PRO_133A }, - { "VLSI SCAMP", MACHINE_CHIPSET_VLSI_SCAMP }, - { "VLSI VL82C480", MACHINE_CHIPSET_VLSI_VL82C480 }, - { "VLSI VL82C481", MACHINE_CHIPSET_VLSI_VL82C481 }, - { "VLSI VL82C486", MACHINE_CHIPSET_VLSI_VL82C486 }, - { "WD76C10", MACHINE_CHIPSET_WD76C10 } -}; - -/* Machines to add before machine freeze: - - TMC Mycomp PCI54ST; - - Zeos Quadtel 486. - - NOTE: The AMI MegaKey tests were done on a real Intel Advanced/ATX - (thanks, MrKsoft for running my AMIKEY.COM on it), but the - technical specifications of the other Intel machines confirm - that the other boards also have the MegaKey. - - NOTE: The later (ie. not AMI Color) Intel AMI BIOS'es execute a - sequence of commands (B8, BA, BB) during one of the very first - phases of POST, in a way that is only valid on the AMIKey-3 - KBC firmware, that includes the Classic PCI/ED (Ninja) BIOS - which otherwise does not execute any AMI KBC commands, which - indicates that the sequence is a leftover of whatever AMI - BIOS (likely a laptop one since the AMIKey-3 is a laptop KBC - firmware!) Intel forked. - - NOTE: The VIA VT82C42N returns 0x46 ('F') in command 0xA1 (so it - emulates the AMI KF/AMIKey KBC firmware), and 0x42 ('B') in - command 0xAF. - The version on the VIA VT82C686B southbridge also returns - 'F' in command 0xA1, but 0x45 ('E') in command 0xAF. - The version on the VIA VT82C586B southbridge also returns - 'F' in command 0xA1, but 0x44 ('D') in command 0xAF. - The version on the VIA VT82C586A southbridge also returns - 'F' in command 0xA1, but 0x43 ('C') in command 0xAF. - - NOTE: The AMI MegaKey commands blanked in the technical reference - are CC and and C4, which are Set P14 High and Set P14 Low, - respectively. Also, AMI KBC command C1, mysteriously missing - from the technical references of AMI MegaKey and earlier, is - Write Input Port, same as on AMIKey-3. -*/ - -const machine_t machines[] = { - // clang-format off - /* 8088 Machines */ - { - .name = "[8088] IBM PC (1981)", - .internal_name = "ibmpc", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_pc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC5150, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 16, - .max = 64, - .step = 16 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ibmpc_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] IBM PC (1982)", - .internal_name = "ibmpc82", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_pc82_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC5150, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 256, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc82_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ibmpc82_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] IBM PCjr", - .internal_name = "ibmpcjr", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_pcjr_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 4772728, - .max_bus = 4772728, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCJR, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_CARTRIDGE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = NULL, /* TODO: No specific kbd_device yet */ - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &pcjr_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] IBM XT (1982)", - .internal_name = "ibmxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 256, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ibmxt_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] IBM XT (1986)", - .internal_name = "ibmxt86", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt86_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt86_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ibmxt86_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] American XT Computer", - .internal_name = "americxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_americxt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] AMI XT clone", - .internal_name = "amixt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_amixt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Atari PC 3", - .internal_name = "ataripc3", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_ataripc3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, +/* + * 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. + * + * Handling of the emulated machines. + * + * Authors: Miran Grca, + * Fred N. van Kempen, + * Jasmine Iwanek, + * + * Copyright 2016-2025 Miran Grca. + * Copyright 2017-2025 Fred N. van Kempen. + * Copyright 2025 Jasmine Iwanek. + */ +#include +#include +#include +#include +#include <86box/86box.h> +#include "cpu.h" +#include <86box/mem.h> +#include <86box/rom.h> +#include <86box/device.h> +#include <86box/chipset.h> +#include <86box/timer.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/keyboard.h> +#include <86box/sio.h> +#include <86box/sound.h> +#include <86box/video.h> +#include <86box/vid_cga.h> +#include <86box/plat_unused.h> +#include <86box/thread.h> +#include <86box/network.h> +#include <86box/machine.h> + +const machine_filter_t machine_types[] = { + { "None", MACHINE_TYPE_NONE }, + { "[1979] 8088", MACHINE_TYPE_8088 }, + { "[1978] 8086", MACHINE_TYPE_8086 }, + { "[1982] 80286", MACHINE_TYPE_286 }, + { "[1988] i386SX", MACHINE_TYPE_386SX }, + { "[1988] ALi M6117", MACHINE_TYPE_M6117 }, + { "[1992] 486SLC", MACHINE_TYPE_486SLC }, + { "[1985] i386DX", MACHINE_TYPE_386DX }, + { "[1989] i386DX/i486", MACHINE_TYPE_386DX_486 }, + { "[1992] i486 (Socket 168 and 1)", MACHINE_TYPE_486 }, + { "[1992] i486 (Socket 2)", MACHINE_TYPE_486_S2 }, + { "[1994] i486 (Socket 3)", MACHINE_TYPE_486_S3 }, + { "[1994] i486 (Socket 3 PCI)", MACHINE_TYPE_486_S3_PCI }, + { "[1992] i486 (Miscellaneous)", MACHINE_TYPE_486_MISC }, + { "[1993] Socket 4", MACHINE_TYPE_SOCKET4 }, + { "[1994] Socket 4/5", MACHINE_TYPE_SOCKET4_5 }, + { "[1994] Socket 5", MACHINE_TYPE_SOCKET5 }, + { "[1995] Socket 7 (Single Voltage)", MACHINE_TYPE_SOCKET7_3V }, + { "[1996] Socket 7 (Dual Voltage)", MACHINE_TYPE_SOCKET7 }, + { "[1998] Super Socket 7", MACHINE_TYPE_SOCKETS7 }, + { "[1995] Socket 8", MACHINE_TYPE_SOCKET8 }, + { "[1997] Slot 1", MACHINE_TYPE_SLOT1 }, + { "[1998] Slot 1/2", MACHINE_TYPE_SLOT1_2 }, + { "[1998] Slot 1/Socket 370", MACHINE_TYPE_SLOT1_370 }, + { "[1998] Slot 2", MACHINE_TYPE_SLOT2 }, + { "[1998] Socket 370", MACHINE_TYPE_SOCKET370 }, + { "Miscellaneous", MACHINE_TYPE_MISC } +}; + +const machine_filter_t machine_chipsets[] = { + { "None", MACHINE_CHIPSET_NONE }, + { "Discrete", MACHINE_CHIPSET_DISCRETE }, + { "Proprietary", MACHINE_CHIPSET_PROPRIETARY }, + { "Headland GC100A", MACHINE_CHIPSET_GC100A }, + { "Headland GC103", MACHINE_CHIPSET_GC103 }, + { "Headland HT18", MACHINE_CHIPSET_HT18 }, + { "ACC 2036", MACHINE_CHIPSET_ACC_2036 }, + { "ACC 2168", MACHINE_CHIPSET_ACC_2168 }, + { "ALi M1217", MACHINE_CHIPSET_ALI_M1217 }, + { "ALi M6117", MACHINE_CHIPSET_ALI_M6117 }, + { "ALi M1409", MACHINE_CHIPSET_ALI_M1409 }, + { "ALi M1429", MACHINE_CHIPSET_ALI_M1429 }, + { "ALi M1429G", MACHINE_CHIPSET_ALI_M1429G }, + { "ALi M1489", MACHINE_CHIPSET_ALI_M1489 }, + { "ALi ALADDiN IV+", MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS }, + { "ALi ALADDiN V", MACHINE_CHIPSET_ALI_ALADDIN_V }, + { "ALi ALADDiN-PRO II", MACHINE_CHIPSET_ALI_ALADDIN_PRO_II }, + { "C&T PC/AT", MACHINE_CHIPSET_CT_AT }, + { "C&T 386/AT", MACHINE_CHIPSET_CT_386 }, + { "C&T 82C235 SCAT", MACHINE_CHIPSET_SCAT }, + { "C&T 82C236 SCATsx", MACHINE_CHIPSET_SCAT_SX }, + { "C&T CS8221 NEAT", MACHINE_CHIPSET_NEAT }, + { "C&T CS8281 NEATsx", MACHINE_CHIPSET_NEAT_SX }, + { "C&T CS4031", MACHINE_CHIPSET_CT_CS4031 }, + { "Contaq 82C596", MACHINE_CHIPSET_CONTAQ_82C596 }, + { "Contaq 82C597", MACHINE_CHIPSET_CONTAQ_82C597 }, + { "IMS 8848", MACHINE_CHIPSET_IMS_8848 }, + { "Intel 82335", MACHINE_CHIPSET_INTEL_82335 }, + { "Intel 420TX", MACHINE_CHIPSET_INTEL_420TX }, + { "Intel 420ZX", MACHINE_CHIPSET_INTEL_420ZX }, + { "Intel 420EX", MACHINE_CHIPSET_INTEL_420EX }, + { "Intel 430LX", MACHINE_CHIPSET_INTEL_430LX }, + { "Intel 430NX", MACHINE_CHIPSET_INTEL_430NX }, + { "Intel 430FX", MACHINE_CHIPSET_INTEL_430FX }, + { "Intel 430HX", MACHINE_CHIPSET_INTEL_430HX }, + { "Intel 430VX", MACHINE_CHIPSET_INTEL_430VX }, + { "Intel 430TX", MACHINE_CHIPSET_INTEL_430TX }, + { "Intel 450KX", MACHINE_CHIPSET_INTEL_450KX }, + { "Intel 440FX", MACHINE_CHIPSET_INTEL_440FX }, + { "Intel 440LX", MACHINE_CHIPSET_INTEL_440LX }, + { "Intel 440EX", MACHINE_CHIPSET_INTEL_440EX }, + { "Intel 440BX", MACHINE_CHIPSET_INTEL_440BX }, + { "Intel 440ZX", MACHINE_CHIPSET_INTEL_440ZX }, + { "Intel 440GX", MACHINE_CHIPSET_INTEL_440GX }, + { "OPTi 283", MACHINE_CHIPSET_OPTI_283 }, + { "OPTi 291", MACHINE_CHIPSET_OPTI_291 }, + { "OPTi 381", MACHINE_CHIPSET_OPTI_381 }, + { "OPTi 391", MACHINE_CHIPSET_OPTI_391 }, + { "OPTi 481", MACHINE_CHIPSET_OPTI_481 }, + { "OPTi 493", MACHINE_CHIPSET_OPTI_493 }, + { "OPTi 495SLC", MACHINE_CHIPSET_OPTI_495SLC }, + { "OPTi 495SX", MACHINE_CHIPSET_OPTI_495SX }, + { "OPTi 496", MACHINE_CHIPSET_OPTI_496 }, + { "OPTi 498", MACHINE_CHIPSET_OPTI_498 }, + { "OPTi 499", MACHINE_CHIPSET_OPTI_499 }, + { "OPTi 895/802G", MACHINE_CHIPSET_OPTI_895_802G }, + { "OPTi 547/597", MACHINE_CHIPSET_OPTI_547_597 }, + { "SARC RC2016A", MACHINE_CHIPSET_SARC_RC2016A }, + { "SiS 310", MACHINE_CHIPSET_SIS_310 }, + { "SiS 401", MACHINE_CHIPSET_SIS_401 }, + { "SiS 460", MACHINE_CHIPSET_SIS_460 }, + { "SiS 461", MACHINE_CHIPSET_SIS_461 }, + { "SiS 471", MACHINE_CHIPSET_SIS_471 }, + { "SiS 496", MACHINE_CHIPSET_SIS_496 }, + { "SiS 501", MACHINE_CHIPSET_SIS_501 }, + { "SiS 5501", MACHINE_CHIPSET_SIS_5501 }, + { "SiS 5511", MACHINE_CHIPSET_SIS_5511 }, + { "SiS 5571", MACHINE_CHIPSET_SIS_5571 }, + { "SiS 5581", MACHINE_CHIPSET_SIS_5581 }, + { "SiS 5591", MACHINE_CHIPSET_SIS_5591 }, + { "SiS (5)600", MACHINE_CHIPSET_SIS_5600 }, + { "SMSC VictoryBX-66", MACHINE_CHIPSET_SMSC_VICTORYBX_66 }, + { "STPC Client", MACHINE_CHIPSET_STPC_CLIENT }, + { "STPC Consumer-II", MACHINE_CHIPSET_STPC_CONSUMER_II }, + { "STPC Elite", MACHINE_CHIPSET_STPC_ELITE }, + { "STPC Atlas", MACHINE_CHIPSET_STPC_ATLAS }, + { "Symphony SL82C460 Haydn II", MACHINE_CHIPSET_SYMPHONY_SL82C460 }, + { "UMC UM82C480", MACHINE_CHIPSET_UMC_UM82C480 }, + { "UMC UM82C491", MACHINE_CHIPSET_UMC_UM82C491 }, + { "UMC UM8881", MACHINE_CHIPSET_UMC_UM8881 }, + { "UMC UM8890BF", MACHINE_CHIPSET_UMC_UM8890BF }, + { "VIA VT82C495", MACHINE_CHIPSET_VIA_VT82C495 }, + { "VIA VT82C496G", MACHINE_CHIPSET_VIA_VT82C496G }, + { "VIA Apollo VPX", MACHINE_CHIPSET_VIA_APOLLO_VPX }, + { "VIA Apollo VP3", MACHINE_CHIPSET_VIA_APOLLO_VP3 }, + { "VIA Apollo MVP3", MACHINE_CHIPSET_VIA_APOLLO_MVP3 }, + { "VIA Apollo Pro", MACHINE_CHIPSET_VIA_APOLLO_PRO }, + { "VIA Apollo Pro 133", MACHINE_CHIPSET_VIA_APOLLO_PRO_133 }, + { "VIA Apollo Pro 133A", MACHINE_CHIPSET_VIA_APOLLO_PRO_133A }, + { "VLSI SCAMP", MACHINE_CHIPSET_VLSI_SCAMP }, + { "VLSI VL82C480", MACHINE_CHIPSET_VLSI_VL82C480 }, + { "VLSI VL82C481", MACHINE_CHIPSET_VLSI_VL82C481 }, + { "VLSI VL82C486", MACHINE_CHIPSET_VLSI_VL82C486 }, + { "WD76C10", MACHINE_CHIPSET_WD76C10 } +}; + +/* + NOTE: The AMI MegaKey tests were done on a real Intel Advanced/ATX + (thanks, MrKsoft for running my AMIKEY.COM on it), but the + technical specifications of the other Intel machines confirm + that the other boards also have the MegaKey. + + NOTE: The later (ie. not AMI Color) Intel AMI BIOS'es execute a + sequence of commands (B8, BA, BB) during one of the very first + phases of POST, in a way that is only valid on the AMIKey-3 + KBC firmware, that includes the Classic PCI/ED (Ninja) BIOS + which otherwise does not execute any AMI KBC commands, which + indicates that the sequence is a leftover of whatever AMI + BIOS (likely a laptop one since the AMIKey-3 is a laptop KBC + firmware!) Intel forked. + + NOTE: The AMI MegaKey commands blanked in the technical reference + are CC and and C4, which are Set P14 High and Set P14 Low, + respectively. Also, AMI KBC command C1, mysteriously missing + from the technical references of AMI MegaKey and earlier, is + Write Input Port, same as on AMIKey-3. +*/ + +const machine_t machines[] = { + // clang-format off + /* 8088 Machines */ + { + .name = "[8088] IBM PC (1981)", + .internal_name = "ibmpc", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_ibmpc_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC5150, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 16, + .max = 64, + .step = 16 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ibmpc_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] IBM PC (1982)", + .internal_name = "ibmpc82", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_ibmpc82_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC5150, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 256, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc82_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ibmpc82_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] IBM PCjr", + .internal_name = "ibmpcjr", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_pcjr_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 4772728, + .max_bus = 4772728, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCJR, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_CARTRIDGE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, /* TODO: No specific kbd_device yet */ + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &pcjr_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] IBM XT (1982)", + .internal_name = "ibmxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_ibmxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 256, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ibmxt_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] IBM XT (1986)", + .internal_name = "ibmxt86", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_ibmxt86_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt86_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ibmxt86_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] American XT Computer", + .internal_name = "americxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_americxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] AMI XT clone", + .internal_name = "amixt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_amixt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Atari PC 3", + .internal_name = "ataripc3", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_ataripc3_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, .flags = MACHINE_FDC, /* Machine has internal video: NSI EVC315-S EGA */ - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Bondwell BW230", - .internal_name = "bw230", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_bw230_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Columbia Data Products MPC-1600", - .internal_name = "mpc1600", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_mpc1600_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 512, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc82_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Compaq Portable", - .internal_name = "portable", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_compaq_portable_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_KEYBOARD, - .ram = { - .min = 128, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_compaq_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] DTK PIM-TB10-Z", - .internal_name = "dtk", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_dtk_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Eagle PC Spirit", - .internal_name = "pcspirit", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pcspirit_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc82_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Generic XT clone", - .internal_name = "genxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_genxt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] GLaBIOS", - .internal_name = "glabios", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_glabios_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Hyosung Topstar 88T", - .internal_name = "top88", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_top88_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, /* Machine has internal video: Paradise PVC2 */ - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Hyundai SUPER-16T", - .internal_name = "super16t", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_super16t_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 4772728, - .max_bus = 8000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Hyundai SUPER-16TE", - .internal_name = "super16te", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_super16te_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Juko ST", - .internal_name = "jukopc", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_jukopc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &jukopc_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Kaypro PC", - .internal_name = "kaypropc", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_kaypropc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Micoms XL-7 Turbo/Pravetz-16ES", - .internal_name = "mxl7t", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_micoms_xl7turbo_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Multitech PC-500", - .internal_name = "pc500", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pc500_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Multitech PC-700", - .internal_name = "pc700", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pc700_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] NCR PC4i", - .internal_name = "pc4i", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pc4i_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Olivetti M19", - .internal_name = "m19", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_m19_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 4772728, - .max_bus = 7159092, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, - .ram = { - .min = 256, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_olivetti_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &m19_vid_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] OpenXT", - .internal_name = "openxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_openxt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Samsung SPC-3000V/Packard Bell PB500/PB8810", - .internal_name = "pb8810", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pb8810_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Philips P3105/NMS9100", - .internal_name = "p3105", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_p3105_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_XTA, - .ram = { - .min = 256, - .max = 768, - .step = 256 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Phoenix XT clone", - .internal_name = "pxxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pxxt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Pravetz 16 / IMKO-4", - .internal_name = "pravetz16", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pravetz16_imko4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_pravetz_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Pravetz 16S / CPU12 Plus", - .internal_name = "pravetz16s", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pravetz16s_cpu12p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 4772728, - .max_bus = 12000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 1024, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Sanyo SX-16", - .internal_name = "sansx16", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_sansx16_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Schneider EuroPC", - .internal_name = "europc", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_europc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088_EUROPC, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_XTA | MACHINE_KEYBOARD | MACHINE_MOUSE, /* Machine has internal video: Paradise PVC4 */ - .ram = { - .min = 512, - .max = 640, - .step = 128 - }, - .nvrmask = 15, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Super PC/Turbo XT", - .internal_name = "pcxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_pcxt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Tandy 1000 SX", - .internal_name = "tandy1000sx", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_tandy1000sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, - .ram = { - .min = 384, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_tandy_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tandy_1000_video_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Tandy 1000 HX", - .internal_name = "tandy1000hx", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_tandy1000hx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Bondwell BW230", + .internal_name = "bw230", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_bw230_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Columbia Data Products MPC-1600", + .internal_name = "mpc1600", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_mpc1600_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 512, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc82_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Compaq Portable", + .internal_name = "portable", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_compaq_portable_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_KEYBOARD, + .ram = { + .min = 128, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_compaq_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] DTK PIM-TB10-Z", + .internal_name = "dtk", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_dtk_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Eagle PC Spirit", + .internal_name = "pcspirit", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pcspirit_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc82_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Generic XT clone", + .internal_name = "genxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_genxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] GLaBIOS", + .internal_name = "glabios", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_glabios_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Hyosung Topstar 88T", + .internal_name = "top88", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_top88_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FDC, /* Machine has internal video: Paradise PVC2 */ + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = &fdc_xt_device, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Hyundai SUPER-16T", + .internal_name = "super16t", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_super16t_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 4772728, + .max_bus = 8000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FDC, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = &fdc_xt_device, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Hyundai SUPER-16TE", + .internal_name = "super16te", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_super16te_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FDC, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = &fdc_xt_device, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Juko ST", + .internal_name = "jukopc", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_jukopc_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &jukopc_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Kaypro PC", + .internal_name = "kaypropc", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_kaypropc_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Micoms XL-7 Turbo/Pravetz-16ES", + .internal_name = "mxl7t", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_micoms_xl7turbo_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Multitech PC-500", + .internal_name = "pc500", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pc500_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Multitech PC-700", + .internal_name = "pc700", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pc700_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] NCR PC4i", + .internal_name = "pc4i", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pc4i_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Olivetti M19", + .internal_name = "m19", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_m19_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 4772728, + .max_bus = 7159092, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, - .ram = { - .min = 256, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_tandy_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tandy_1000hx_video_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Toshiba T1000", - .internal_name = "t1000", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_t1000_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD, - .ram = { - .min = 512, - .max = 1280, - .step = 768 - }, - .nvrmask = 63, - .kbc_device = &kbc_xt_t1x00_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &t1000_video_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Vendex HeadStart Turbo 888-XT", - .internal_name = "vendex", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_vendex_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 768, - .step = 256 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &vendex_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] VTech Laser Turbo XT", - .internal_name = "ltxt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_laserxt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088_VTECH, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &laserxt_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a standard PS/2 KBC (so, use IBM PS/2 Type 1). */ - { - .name = "[8088] Xi8088", - .internal_name = "xi8088", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_xi8088_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 1024, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = &kbc_ps2_xi8088_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &xi8088_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Z-NIX PC-1600", - .internal_name = "znic", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_znic_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Zenith Data Systems Z-151/152/161", - .internal_name = "zdsz151", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_z151_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_zenith_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Zenith Data Systems Z-159", - .internal_name = "zdsz159", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_z159_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_zenith_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8088] Zenith Data Systems SupersPort (Z-184)", - .internal_name = "zdsupers", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_z184_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED, - .ram = { - .min = 128, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_zenith_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &cga_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[GC100A] Philips P3120", - .internal_name = "p3120", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_GC100A, - .init = machine_xt_p3120_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_XTA, - .ram = { - .min = 256, - .max = 768, - .step = 256 - }, - .nvrmask = 0, - .kbc_device = &kbc_pc_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[V20] PC-XT", - .internal_name = "v20xt", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_v20xt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK(CPU_8088), - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[V20] Tulip PC Compact 2", - .internal_name = "tuliptc8", - .type = MACHINE_TYPE_8088, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_tuliptc8_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8088, - .block = CPU_BLOCK(CPU_8088), - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 64, - .max = 640, - .step = 64 - }, - .nvrmask = 63, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 8086 Machines */ - { - .name = "[8086] Amstrad PC1512", - .internal_name = "pc1512", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_pc1512_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 8000000, - .max_bus = 8000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_MOUSE, - .ram = { - .min = 512, - .max = 640, - .step = 128 - }, - .nvrmask = 63, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &vid_1512_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Amstrad PC1640", - .internal_name = "pc1640", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_pc1640_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE, - .ram = { - .min = 640, - .max = 640, - .step = 640 - }, - .nvrmask = 63, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &vid_1640_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Amstrad PC2086", - .internal_name = "pc2086", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_pc2086_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_MOUSE, - .ram = { - .min = 640, - .max = 640, - .step = 640 - }, - .nvrmask = 63, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &vid_pc2086_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Amstrad PC3086", - .internal_name = "pc3086", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_pc3086_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_MOUSE, - .ram = { - .min = 640, - .max = 640, - .step = 640 - }, - .nvrmask = 63, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &vid_pc3086_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Amstrad PC20(0)", - .internal_name = "pc200", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_pc200_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE, - .ram = { - .min = 512, - .max = 640, - .step = 128 - }, - .nvrmask = 63, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &vid_200_device, - .snd_device = NULL, - .net_device = NULL - }, + .ram = { + .min = 256, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_olivetti_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &m19_vid_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] OpenXT", + .internal_name = "openxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_openxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Philips P3105/NMS9100", + .internal_name = "p3105", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_p3105_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_XTA, + .ram = { + .min = 256, + .max = 768, + .step = 256 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Phoenix XT clone", + .internal_name = "pxxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pxxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Pravetz 16 / IMKO-4", + .internal_name = "pravetz16", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pravetz16_imko4_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pravetz_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Pravetz 16S / CPU12 Plus", + .internal_name = "pravetz16s", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pravetz16s_cpu12p_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 4772728, + .max_bus = 12000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 1024, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Samsung SPC-3000V/Packard Bell PB500/PB8810", + .internal_name = "pb8810", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pb8810_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Sanyo SX-16", + .internal_name = "sansx16", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_sansx16_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FDC, + .ram = { + .min = 256, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = &fdc_xt_device, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Schneider EuroPC", + .internal_name = "europc", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_europc_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088_EUROPC, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_XTA | MACHINE_KEYBOARD | MACHINE_MOUSE, /* Machine has internal video: Paradise PVC4 */ + .ram = { + .min = 512, + .max = 640, + .step = 128 + }, + .nvrmask = 15, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Super PC/Turbo XT", + .internal_name = "pcxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_pcxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Tandy 1000 SX", + .internal_name = "tandy1000sx", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_tandy1000sx_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, + .ram = { + .min = 384, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_tandy_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tandy_1000_video_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Tandy 1000 HX", + .internal_name = "tandy1000hx", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_tandy1000hx_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, + .ram = { + .min = 256, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_tandy_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tandy_1000hx_video_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Toshiba T1000", + .internal_name = "t1000", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_t1000_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD, + .ram = { + .min = 512, + .max = 1280, + .step = 768 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_t1x00_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &t1000_video_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Vendex HeadStart Turbo 888-XT", + .internal_name = "vendex", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_vendex_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FDC, + .ram = { + .min = 256, + .max = 768, + .step = 256 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &vendex_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = &fdc_xt_device, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] VTech Laser Turbo XT", + .internal_name = "ltxt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_laserxt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088_VTECH, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &laserxt_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a standard PS/2 KBC (so, use IBM PS/2 Type 1). */ + { + .name = "[8088] Xi8088", + .internal_name = "xi8088", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_xi8088_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 1024, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_p1 = 0x00400cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &xi8088_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Z-NIX PC-1600", + .internal_name = "znic", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_znic_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Zenith Data Systems Z-151/152/161", + .internal_name = "zdsz151", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_z151_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_zenith_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Zenith Data Systems Z-159", + .internal_name = "zdsz159", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_z159_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_zenith_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8088] Zenith Data Systems SupersPort (Z-184)", + .internal_name = "zdsupers", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_z184_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO_FIXED, + .ram = { + .min = 128, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_zenith_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &cga_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[GC100A] Philips P3120", + .internal_name = "p3120", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_GC100A, + .init = machine_xt_p3120_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_XTA, + .ram = { + .min = 256, + .max = 768, + .step = 256 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[V20] PC-XT", + .internal_name = "v20xt", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_v20xt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK(CPU_8088), + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[V20] Tulip PC Compact 2", + .internal_name = "tuliptc8", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_tuliptc8_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8088, + .block = CPU_BLOCK(CPU_8088), + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 64, + .max = 640, + .step = 64 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 8086 Machines */ + { + .name = "[8086] Amstrad PC1512", + .internal_name = "pc1512", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_pc1512_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 8000000, + .max_bus = 8000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_MOUSE, + .ram = { + .min = 512, + .max = 640, + .step = 128 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &vid_1512_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Amstrad PC1640", + .internal_name = "pc1640", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_pc1640_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE, + .ram = { + .min = 640, + .max = 640, + .step = 640 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &vid_1640_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Amstrad PC2086", + .internal_name = "pc2086", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_pc2086_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_MOUSE, + .ram = { + .min = 640, + .max = 640, + .step = 640 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &vid_pc2086_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Amstrad PC3086", + .internal_name = "pc3086", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_pc3086_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_XTA | MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_MOUSE, + .ram = { + .min = 640, + .max = 640, + .step = 640 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &vid_pc3086_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Amstrad PC20(0)", + .internal_name = "pc200", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_pc200_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE, + .ram = { + .min = 512, + .max = 640, + .step = 128 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &vid_200_device, + .snd_device = NULL, + .net_device = NULL + }, { .name = "[8086] Amstrad PC5086", .internal_name = "pc5086", .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_pc5086_init, + .init = machine_xt_pc5086_init, .p1_handler = NULL, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, @@ -2349,16137 +2457,17790 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &f82c710_pc5086_device, - .kbd_device = NULL, + .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL }, - { - .name = "[8086] Amstrad PPC512/640", - .internal_name = "ppc512", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ppc512_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE, - .ram = { - .min = 512, - .max = 640, - .step = 128 - }, - .nvrmask = 63, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &vid_ppc512_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Compaq Deskpro", - .internal_name = "deskpro", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_compaq_deskpro_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_compaq_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Epson Equity LT", - .internal_name = "elt", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_elt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO, - .ram = { - .min = 640, - .max = 640, - .step = 640 - }, - .nvrmask = 0x3f, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Mazovia 1016", - .internal_name = "maz1016", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_maz1016_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086_MAZOVIA, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 384 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Olivetti M21/24/24SP/AT&T PC 6300", - .internal_name = "m24", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_m24_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE | MACHINE_MFM, - .ram = { - .min = 128, - .max = 640, - .step = 128 - }, - .nvrmask = 15, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &ogc_m24_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Olivetti KBC firmware. */ - { - .name = "[8086] Olivetti M240/AT&T PC 6300 WGS", - .internal_name = "m240", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_m240_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_KEYBOARD | MACHINE_MFM, - .ram = { - .min = 128, - .max = 640, - .step = 128 - }, - .nvrmask = 15, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Schetmash Iskra-3104", - .internal_name = "iskra3104", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_iskra3104_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 128, - .max = 640, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = &kbc_xtclone_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Tandy 1000 SL/2", - .internal_name = "tandy1000sl2", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_tandy1000sl2_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, - .ram = { - .min = 512, - .max = 768, - .step = 128 - }, - .nvrmask = 0, - .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tandy_1000sl_video_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Toshiba T1200", - .internal_name = "t1200", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_xt_t1200_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MFM, - .ram = { - .min = 1024, - .max = 2048, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = &kbc_xt_t1x00_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &t1200_video_device, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] Victor V86P", - .internal_name = "v86p", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_v86p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MFM, - .ram = { - .min = 512, - .max = 1024, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = &kbc_xt_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[8086] VTech Laser XT3", - .internal_name = "lxt3", - .type = MACHINE_TYPE_8086, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_xt_lxt3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_8086_VTECH, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 640, - .step = 64 - }, - .nvrmask = 0, - .kbc_device = &kbc_xt_lxt3_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &lxt3_device, - .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 286 AT machines */ - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] IBM AT", - .internal_name = "ibmat", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_ibm_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 8000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 512, - .step = 256 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ibmat_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[ISA] IBM PS/1 model 2011", - .internal_name = "ibmps1es", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps1_m2011_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 10000000, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_XTA | MACHINE_VIDEO_FIXED, - .ram = { - .min = 512, - .max = 15360, - .step = 512 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ps1_2011_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[ISA] IBM PS/2 model 30-286", - .internal_name = "ibmps2_m30_286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_m30_286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, - .block = CPU_BLOCK_NONE, - .min_bus = 10000000, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_XTA | MACHINE_VIDEO_FIXED, - .ram = { - .min = 512, - .max = 16384, - .step = 512 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] IBM XT Model 286", - .internal_name = "ibmxt286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_ibmxt286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 6000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 640, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ibmxt286_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* AMI BIOS for a chipset-less machine, most likely has AMI 'F' KBC firmware. */ - { - .name = "[ISA] AMI IBM AT", - .internal_name = "ibmatami", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_ibmatami_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 512, - .step = 256 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses Commodore (CBM) KBC firmware, to be implemented as identical to the - IBM AT KBC firmware unless evidence emerges of any proprietary commands. */ - { - .name = "[ISA] Commodore PC 30 III", - .internal_name = "cmdpc30", - .type = MACHINE_TYPE_286, + { + .name = "[8086] Amstrad PPC512/640", + .internal_name = "ppc512", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ppc512_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE, + .ram = { + .min = 512, + .max = 640, + .step = 128 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &vid_ppc512_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Compaq Deskpro", + .internal_name = "deskpro", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_compaq_deskpro_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_compaq_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Epson Equity LT", + .internal_name = "elt", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_elt_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO, + .ram = { + .min = 640, + .max = 640, + .step = 640 + }, + .nvrmask = 0x3f, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Mazovia 1016", + .internal_name = "maz1016", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_maz1016_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086_MAZOVIA, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 640, + .step = 384 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Olivetti M21/24/24SP/AT&T PC 6300", + .internal_name = "m24", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_m24_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MOUSE | MACHINE_MFM, + .ram = { + .min = 128, + .max = 640, + .step = 128 + }, + .nvrmask = 15, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &ogc_m24_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Olivetti KBC firmware. */ + { + .name = "[8086] Olivetti M240/AT&T PC 6300 WGS", + .internal_name = "m240", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_m240_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_KEYBOARD | MACHINE_MFM, + .ram = { + .min = 128, + .max = 640, + .step = 128 + }, + .nvrmask = 15, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Schetmash Iskra-3104", + .internal_name = "iskra3104", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_iskra3104_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 128, + .max = 640, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Tandy 1000 SL/2", + .internal_name = "tandy1000sl2", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_tandy1000sl2_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, + .ram = { + .min = 512, + .max = 768, + .step = 128 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tandy_1000sl_video_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Toshiba T1200", + .internal_name = "t1200", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_xt_t1200_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MFM, + .ram = { + .min = 1024, + .max = 2048, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_t1x00_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &t1200_video_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] Victor V86P", + .internal_name = "v86p", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_v86p_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD | MACHINE_MFM, + .ram = { + .min = 512, + .max = 1024, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[8086] VTech Laser XT3", + .internal_name = "lxt3", + .type = MACHINE_TYPE_8086, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_lxt3_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_8086_VTECH, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PC, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 640, + .step = 64 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_xt_lxt3_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &lxt3_device, + .kbd_device = &keyboard_pc_xt_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 286 AT machines */ + /* Has IBM AT KBC firmware. */ + { + .name = "[ISA] IBM AT", + .internal_name = "ibmat", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_ibmat_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 8000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 512, + .step = 256 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ibmat_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[ISA] IBM PS/1 model 2011", + .internal_name = "ibmps1es", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps1_m2011_init, + .p1_handler = machine_ps1_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 10000000, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_XTA | MACHINE_VIDEO_FIXED, + .ram = { + .min = 512, + .max = 15360, + .step = 512 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ps1_2011_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[ISA] IBM PS/2 model 30-286", + .internal_name = "ibmps2_m30_286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_m30_286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, + .block = CPU_BLOCK_NONE, + .min_bus = 10000000, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_XTA | MACHINE_VIDEO_FIXED, + .ram = { + .min = 512, + .max = 16384, + .step = 512 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + { + .name = "[ISA] IBM XT Model 286", + .internal_name = "ibmxt286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_ibmxt286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 6000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 640, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ibmxt286_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* AMI BIOS for a chipset-less machine, most likely has AMI 'F' KBC firmware. */ + { + .name = "[ISA] AMI IBM AT", + .internal_name = "ibmatami", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_ibmatami_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 512, + .step = 256 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Commodore (CBM) KBC firmware, to be implemented as identical to the + IBM AT KBC firmware unless evidence emerges of any proprietary commands. */ + { + .name = "[ISA] Commodore PC 30 III", + .internal_name = "cmdpc30", + .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Machine has chipset: Faraday FE3400B */ - .init = machine_at_cmdpc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 12500000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 640, - .max = 14912, - .step = 64 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses Compaq KBC firmware. */ - { - .name = "[ISA] Compaq Portable II", - .internal_name = "portableii", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_at_portableii_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 16000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_KEYBOARD, - .ram = { - .min = 640, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses Compaq KBC firmware. */ - { - .name = "[ISA] Compaq Portable III", - .internal_name = "portableiii", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_at_portableiii_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 16000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, + .init = machine_at_cmdpc_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 12500000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 640, + .max = 14912, + .step = 64 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Compaq KBC firmware. */ + { + .name = "[ISA] Compaq Portable II", + .internal_name = "portableii", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_at_portableii_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 16000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_KEYBOARD, + .ram = { + .min = 640, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Compaq KBC firmware. */ + { + .name = "[ISA] Compaq Portable III", + .internal_name = "portableiii", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_at_portableiii_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 16000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_KEYBOARD, - .ram = { - .min = 640, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &compaq_plasma_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] MR BIOS 286 clone", - .internal_name = "mr286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_mr286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 512, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] NCR PC8/810/710/3390/3392", - .internal_name = "pc8", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_pc8_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Olivetti KBC firmware. */ - { - .name = "[ISA] Olivetti M290/AT&T 6286 WGS", - .internal_name = "m290", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Yes, it's M290 with 98/86 gate array, not M290-30 with VLSI TOPCAT chipset. */ - .init = machine_at_m290_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] Phoenix IBM AT", - .internal_name = "ibmatpx", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_ibmatpx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 512, - .step = 256 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Quadtel KBC firmware. */ - { - .name = "[ISA] Quadtel IBM AT", - .internal_name = "ibmatquadtel", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_ibmatquadtel_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 512, - .step = 256 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - /* To configure the BIOS, use PB_2330a_diag.IMA from MS-DOS 3.30 Packard Bell OEM, GSETUP might work too*/ - { - .name = "[ISA] Packard Bell PB286", - .internal_name = "pb286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_pb286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 1024, - .step = 128 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has a Siemens proprietary KBC which is completely undocumented. */ - { - .name = "[ISA] Siemens PCD-2L", - .internal_name = "siemens", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_siemens_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 12500000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 256, - .max = 15872, - .step = 128 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has Toshiba's proprietary KBC, which is already implemented. */ - { - .name = "[ISA] Toshiba T3100e", - .internal_name = "t3100e", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_at_t3100e_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE | MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, - .ram = { - .min = 1024, - .max = 5120, - .step = 256 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[ISA] GRiD GRiDcase 1520", - .internal_name = "grid1520", - .type = MACHINE_TYPE_286, + .ram = { + .min = 640, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &compaq_plasma_device, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[ISA] GRiD GRiDcase 1520", + .internal_name = "grid1520", + .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Machine has chipset: Faraday FE3400B */ - .init = machine_at_grid1520_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 10000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE /*| MACHINE_VIDEO_FIXED*/ | MACHINE_KEYBOARD, - .ram = { - .min = 1024, - .max = 8192, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC - firmware. */ - { - .name = "[C&T PC/AT] Dell System 200", - .internal_name = "dells200", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_CT_AT, - .init = machine_at_dells200_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 12000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 640, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* has an Award-branded KBC controller */ - { - .name = "[C&T PC/AT] Hyundai Super-286C", - .internal_name = "super286c", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_CT_AT, - .init = machine_at_super286c_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 1024, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL + .init = machine_at_grid1520_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 10000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE /*| MACHINE_VIDEO_FIXED*/ | MACHINE_KEYBOARD, + .ram = { + .min = 1024, + .max = 8192, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL }, - /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC - firmware. */ - { - .name = "[C&T PC/AT] PC's Limited (Dell) 28608L/AT122", - .internal_name = "at122", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_CT_AT, - .init = machine_at_at122_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 12000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 640, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC - firmware. */ - { - .name = "[C&T PC/AT] Tulip AT Compact", - .internal_name = "tuliptc7", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_CT_AT, - .init = machine_at_tuliptc7_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 12000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 640, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL + /* Has IBM AT KBC firmware. */ + { + .name = "[ISA] MR BIOS 286 clone", + .internal_name = "mr286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_mr286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL }, - /* Has Chips & Technologies KBC firmware. */ - { - .name = "[C&T PC/AT] Wells American A*Star", - .internal_name = "wellamerastar", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_CT_AT, - .init = machine_at_wellamerastar_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 6000000, - .max_bus = 14000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 1024, - .step = 512 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Quadtel KBC firmware. */ - { - .name = "[GC103] Quadtel 286 clone", - .internal_name = "quadt286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_GC103, - .init = machine_at_quadt286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_SOFTFLOAT_ONLY, - .ram = { - .min = 512, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Most likely has AMI 'F' KBC firmware. */ - { - .name = "[GC103] TriGem 286M", - .internal_name = "tg286m", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_GC103, - .init = machine_at_tg286m_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[NEAT] Atari PC 4", - .internal_name = "ataripc4", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_NEAT, - .init = machine_at_ataripc4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, + /* Has IBM AT KBC firmware. */ + { + .name = "[ISA] NCR PC8/810/710/3390/3392", + .internal_name = "pc8", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_pc8_init, + .p1_handler = machine_ncr_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_NCR, + .kbc_p1 = 0x000004df, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Olivetti KBC firmware. */ + { + .name = "[ISA] Olivetti M290/AT&T 6286 WGS", + .internal_name = "m290", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Yes, it's M290 with 98/86 gate array, not M290-30 with VLSI TOPCAT chipset. */ + .init = machine_at_m290_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_OLIVETTI, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + { + .name = "[ISA] Phoenix IBM AT", + .internal_name = "ibmatpx", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_ibmatpx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 512, + .step = 256 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Quadtel KBC firmware. */ + { + .name = "[ISA] Quadtel IBM AT", + .internal_name = "ibmatquadtel", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_ibmatquadtel_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 512, + .step = 256 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_QUADTEL, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + /* To configure the BIOS, use PB_2330a_diag.IMA from MS-DOS 3.30 Packard Bell OEM, GSETUP might work too*/ + { + .name = "[ISA] Packard Bell PB286", + .internal_name = "pb286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_pb286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 1024, + .step = 128 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has unknown KBC firmware. */ + { + .name = "[ISA] Sanyo MBC-17PLUS", + .internal_name = "mbc17", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_mbc17_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 12000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has unknown KBC firmware. */ + { + .name = "[ISA] Sharp AX286D", + .internal_name = "ax286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_ax286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + /* The version number is a guess - we have no probe of this machine's controller. */ + .kbc_params = KBC_VEN_PHOENIX | 0x00010500, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a Siemens proprietary KBC which is completely undocumented. */ + { + .name = "[ISA] Siemens PCD-2L", + .internal_name = "siemens", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_siemens_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 12500000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 256, + .max = 15872, + .step = 128 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_SIEMENS, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has Toshiba's proprietary KBC, which is already implemented. */ + { + .name = "[ISA] Toshiba T3100e", + .internal_name = "t3100e", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_at_t3100e_init, + .p1_handler = machine_t3100e_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD, + .ram = { + .min = 1024, + .max = 5120, + .step = 256 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_TOSHIBA, + .kbc_p1 = 0x0000bfff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC + firmware. */ + { + .name = "[C&T PC/AT] Dell System 200", + .internal_name = "dells200", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_CT_AT, + .init = machine_at_dells200_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 12000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 640, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* has an Award-branded KBC controller */ + { + .name = "[NEAT] Hyundai Super-286C", + .internal_name = "super286c", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_super286c_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 1024, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AWARD | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC + firmware. */ + { + .name = "[C&T PC/AT] PC's Limited (Dell) 28608L/AT122", + .internal_name = "at122", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_CT_AT, + .init = machine_at_at122_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 12000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 640, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC + firmware. */ + { + .name = "[C&T PC/AT] Tulip AT Compact", + .internal_name = "tuliptc7", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_CT_AT, + .init = machine_at_tuliptc7_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 12000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 640, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Chips & Technologies KBC firmware. */ + { + .name = "[C&T PC/AT] Wells American A*Star", + .internal_name = "wellamerastar", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_CT_AT, + .init = machine_at_wellamerastar_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 6000000, + .max_bus = 14000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 1024, + .step = 512 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_CHIPS | 0x0000a600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Quadtel KBC firmware. */ + { + .name = "[GC103] Quadtel 286 clone", + .internal_name = "quadt286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_GC103, + .init = machine_at_quadt286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_SOFTFLOAT_ONLY, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_QUADTEL, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI 'B' KBC firmware. */ + { + .name = "[GC103] TriGem 286M", + .internal_name = "tg286m", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_GC103, + .init = machine_at_tg286m_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004200, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Most likely has Chips & Technologies KBC firmware. */ + { + .name = "[NEAT] Atari PC 4", + .internal_name = "ataripc4", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_ataripc4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, .flags = MACHINE_FDC, /* Machine has video: Paradise PVGA1A */ - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = &kbc_at_ami_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has "AMI KEYBOARD BIOS", most likely 'F'. */ - { - .name = "[NEAT] DataExpert 286", - .internal_name = "ami286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_NEAT, - .init = machine_at_neat_ami_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[NEAT] NCR 3302", - .internal_name = "3302", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_NEAT, - .init = machine_at_3302_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 512, - .max = 5120, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = ¶dise_pvga1a_ncr3302_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[NEAT] Arche AMA-2010", - .internal_name = "px286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_NEAT, - .init = machine_at_px286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Chips & Technologies KBC firmware. */ - { - .name = "[SCAT] GW-286CT GEAR", - .internal_name = "gw286ct", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_gw286ct_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 512, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[SCAT] Goldstar GDC-212M", - .internal_name = "gdc212m", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_gdc212m_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE, - .ram = { - .min = 512, - .max = 4096, - .step = 512 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC. */ - { - .name = "[SCAT] Hyundai Solomon 286KP", - .internal_name = "award286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_award286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 640, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC. */ - { - .name = "[SCAT] Hyundai Super-286TR", - .internal_name = "super286tr", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_super286tr_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 640, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[SCAT] ICL DRS M35/286", - .internal_name = "drsm35286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_drsm35286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_CHIPS | 0x0000a600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is 'H'. */ + { + .name = "[NEAT] DataExpert 286", + .internal_name = "ami286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_neat_ami_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has NCR KBC firmware. */ + { + .name = "[NEAT] NCR 3302", + .internal_name = "3302", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_3302_init, + .p1_handler = machine_ncr_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 512, + .max = 5120, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_NCR, + .kbc_p1 = 0x000004df, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = ¶dise_pvga1a_ncr3302_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Phoenix MultiKey/42 KBC firmware. */ + { + .name = "[NEAT] Arche AMA-2010", + .internal_name = "px286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_px286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + /* The version number is a guess - we have no probe of this machine's controller. */ + .kbc_params = KBC_VEN_PHOENIX | 0x00010500, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the VLSI 82C113 with on-chip KBC. */ + { + .name = "[SCAMP] Amstrad PC7286", + .internal_name = "pc7286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_VLSI_SCAMP, + .init = machine_at_pc7286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has unknown KBC firmware. */ + { + .name = "[SCAT] Amstrad PC5286", + .internal_name = "pc5286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_pc5286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT | MACHINE_BUS_PS2, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &f82c710_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Chips & Technologies KBC firmware. */ + { + .name = "[SCAT] GW-286CT GEAR", + .internal_name = "gw286ct", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_gw286ct_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_CHIPS | 0x0000a600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &f82c710_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware - that's actually a guess since we + do not currently have a picture of the motherboard. + In the code, we actually give it the AMI PS/2 controller. */ + { + .name = "[SCAT] Goldstar GDC-212M", + .internal_name = "gdc212m", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_gdc212m_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, + .ram = { + .min = 512, + .max = 4096, + .step = 512 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[SCAT] Hyundai Solomon 286KP", + .internal_name = "award286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_award286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 640, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[SCAT] Hyundai Super-286TR", + .internal_name = "super286tr", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_super286tr_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 640, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { + .name = "[SCAT] ICL DRS M35/286", + .internal_name = "drsm35286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_drsm35286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, .flags = MACHINE_IDE | MACHINE_VIDEO, /* Machine has Super I/O: C&T F82C711 */ - .ram = { - .min = 512, - .max = 5120, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5401_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[SCAT] Samsung Deskmaster 286", - .internal_name = "deskmaster286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_deskmaster286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE, /* Has internal video: C&T VGA 411 */ - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[SCAT] Samsung SPC-4200P", - .internal_name = "spc4200p", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_spc4200p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE, /* Has internal video: C&T VGA 411 */ - .ram = { - .min = 512, - .max = 2048, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[SCAT] Samsung SPC-4216P", - .internal_name = "spc4216p", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_spc4216p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 5120, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[SCAT] Samsung SPC-4620P", - .internal_name = "spc4620p", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_spc4620p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 5120, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[SCAT] Senor Science Co. SCAT-286-003", - .internal_name = "senorscat286", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_SCAT, - .init = machine_at_senor_scat286_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 1024, - .max = 4096, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* 286 machines that utilize the MCA bus */ - /* Has IBM PS/2 Type 2 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 50", - .internal_name = "ibmps2_m50", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_50_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, - .block = CPU_BLOCK_NONE, - .min_bus = 10000000, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 10240, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 2 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 60", - .internal_name = "ibmps2_m60", - .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_60_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, - .block = CPU_BLOCK_NONE, - .min_bus = 10000000, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 10240, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 386SX machines */ - /* ISA slots available because an official IBM expansion for that existed. */ - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[ISA] IBM PS/1 model 2121", - .internal_name = "ibmps1_2121", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps1_m2121_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 2048, - .max = 6144, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] NCR PC916SX", - .internal_name = "pc916sx", - .type = MACHINE_TYPE_386SX, + .ram = { + .min = 512, + .max = 5120, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5401_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + { + .name = "[SCAT] Samsung Deskmaster 286", + .internal_name = "deskmaster286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_deskmaster286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, /* Has internal video: C&T VGA 411 */ + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Samsung (SEC) V1.4 KBC firmware. */ + /* TODO: Do kbc_at.c logging to see if the BIOS sends any proprietary commands. */ + { + .name = "[SCAT] Samsung SPC-4200P", + .internal_name = "spc4200p", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_spc4200p_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, /* Has internal video: C&T VGA 411 */ + .ram = { + .min = 512, + .max = 2048, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Most likely has a Samsung (SEC) V1.4 KBC firmware like the SPC-4200P above. */ + { + .name = "[SCAT] Samsung SPC-4216P", + .internal_name = "spc4216p", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_spc4216p_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 5120, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Most likely has a Samsung (SEC) V1.4 KBC firmware like the SPC-4200P above. */ + { + .name = "[SCAT] Samsung SPC-4620P", + .internal_name = "spc4620p", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_spc4620p_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 5120, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI '8' KBC firmware. */ + { + .name = "[SCAT] Senor Science Co. SCAT-286-003", + .internal_name = "senorscat286", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_SCAT, + .init = machine_at_senor_scat286_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 1024, + .max = 4096, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00003800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* 286 machines that utilize the MCA bus */ + /* Has IBM PS/2 Type 2 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 50", + .internal_name = "ibmps2_m50", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_50_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, + .block = CPU_BLOCK_NONE, + .min_bus = 10000000, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 10240, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM | KBC_FLAG_IS_TYPE2, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 2 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 60", + .internal_name = "ibmps2_m60", + .type = MACHINE_TYPE_286, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_60_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, + .block = CPU_BLOCK_NONE, + .min_bus = 10000000, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 10240, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM | KBC_FLAG_IS_TYPE2, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 386SX machines */ + /* ISA slots available because an official IBM expansion for that existed. */ + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[ISA] IBM PS/1 model 2121", + .internal_name = "ibmps1_2121", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps1_m2121_init, + .p1_handler = machine_ps1_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 2048, + .max = 6144, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has NCR KBC firmware. */ + { + .name = "[ISA] NCR PC916SX", + .internal_name = "pc916sx", + .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, /* Machine has chipset: TI TACT82000 */ - .init = machine_at_pc916sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Quadtel KBC firmware. */ - { - .name = "[ISA] QTC-SXM KT X20T02/HI", - .internal_name = "quadt386sx", - .type = MACHINE_TYPE_386SX, + .init = machine_at_pc916sx_init, + .p1_handler = machine_ncr_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_NCR, + .kbc_p1 = 0x000004df, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Quadtel KBC firmware. */ + { + .name = "[ISA] QTC-SXM KT X20T02/HI", + .internal_name = "quadt386sx", + .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, /* Machine has chipset: VLSI TOPCAT */ - .init = machine_at_quadt386sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Most likely has Phonenix KBC firmware. */ - { - .name = "[ACC 2036] Packard Bell Legend 300SX", - .internal_name = "pbl300sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ACC_2036, - .init = machine_at_pbl300sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &pbl300sx_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &oti037_pbl300sx_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[ALi M1217] Acrosser AR-B1374", - .internal_name = "arb1374", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ALI_M1217, - .init = machine_at_arb1374_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the AMIKey-2 KBC. */ - { - .name = "[ALi M1217] AAEON SBC-350A", - .internal_name = "sbc350a", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ALI_M1217, - .init = machine_at_sbc350a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC. */ - { - .name = "[ALi M1217] Flytech A36", - .internal_name = "flytech386", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ALI_M1217, - .init = machine_at_flytech386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tvga8900d_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a JetKey KBC without version, shows up as a 'H'. */ - { - .name = "[ALi M1217] Chaintech 325AX", - .internal_name = "325ax", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ALI_M1217, - .init = machine_at_325ax_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a JetKey KBC without version, shows up as a 'H'. */ - { - .name = "[ALi M1217] Chaintech 325AX (MR BIOS)", - .internal_name = "mr1217", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ALI_M1217, - .init = machine_at_mr1217_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[ALi M1409] Acer 100T", - .internal_name = "acer100t", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_ALI_M1409, - .init = machine_at_acer100t_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 16000000, - .max_bus = 25000000, /* Limited to 25 due a inaccurate cpu speed */ - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0, - - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO , /* Machine has internal OTI 077 Video card*/ - .ram = { - .min = 2048, - .max = 16256, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &oti077_acer100t_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an AMI KBC firmware, the only photo of this is too low resolution - for me to read what's on the KBC chip, so I'm going to assume AMI 'F' - based on the other known HT18 AMI BIOS strings. */ - { - .name = "[HT18] Arche AMA-932J", - .internal_name = "ama932j", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_HT18, - .init = machine_at_ama932j_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &oti067_ama932j_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an unknown KBC firmware with commands B8 and BB in the style of - Phoenix MultiKey and AMIKey-3(!), but also commands E1 and EA with - unknown functions. */ - { - .name = "[Intel 82335] ADI 386SX", - .internal_name = "adi386sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_INTEL_82335, - .init = machine_at_adi386sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an AMI Keyboard BIOS PLUS KBC firmware ('8'). */ - { .name = "[Intel 82335] Shuttle 386SX", - .internal_name = "shuttle386sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_INTEL_82335, - .init = machine_at_shuttle386sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses Commodore (CBM) KBC firmware, to be implemented as identical to - the IBM PS/2 Type 1 KBC firmware unless evidence emerges of any - proprietary commands. */ - { - .name = "[NEAT] Commodore SL386SX-16", - .internal_name = "cmdsl386sx16", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_NEAT, - .init = machine_at_cmdsl386sx16_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 8192, - .step = 512 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[NEAT] DTK PM-1630C", - .internal_name = "dtk386", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_NEAT, - .init = machine_at_neat_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { .name = "[NEATsx] OKI if386AX30L", - .internal_name = "if386sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_NEAT_SX, - .init = machine_at_if386sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_KEYBOARD_JIS | MACHINE_AX, - .ram = { - .min = 1024, - .max = 4096, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[OPTi 291] DTK PPM-3333P", - .internal_name = "awardsx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_OPTI_291, - .init = machine_at_awardsx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses Commodore (CBM) KBC firmware, to be implemented as identical to - the IBM PS/2 Type 1 KBC firmware unless evidence emerges of any - proprietary commands. */ - { - .name = "[SCAMP] Commodore SL386SX-25", - .internal_name = "cmdsl386sx25", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_VLSI_SCAMP, - .init = machine_at_cmdsl386sx25_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 8192, - .step = 512 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5402_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* The closest BIOS string I find to this one's, differs only in one part, - and ends in -8, so I'm going to assume that this, too, has an AMI '8' - (AMI Keyboard BIOS Plus) KBC firmware. */ - { - .name = "[SCAMP] DataExpert 386SX", - .internal_name = "dataexpert386sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_VLSI_SCAMP, - .init = machine_at_dataexpert386sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 10000000, - .max_bus = 25000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC - firmware. */ - { - .name = "[SCAMP] Dell System 333s/L", - .internal_name = "dells333sl", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_VLSI_SCAMP, - .init = machine_at_dells333sl_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 10000000, - .max_bus = 33333333, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 16384, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &dells333sl_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5420_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[SCAMP] Samsung SPC-6033P", - .internal_name = "spc6033p", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_VLSI_SCAMP, - .init = machine_at_spc6033p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 2048, - .max = 12288, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &ati28800k_spc6033p_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an unknown AMI KBC firmware, I'm going to assume 'F' until a - photo or real hardware BIOS string is found. */ - { - .name = "[SCATsx] Kaimei KMX-C-02", - .internal_name = "kmxc02", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_SCAT_SX, - .init = machine_at_kmxc02_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 512, - .max = 16384, - .step = 512 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Quadtel KBC firmware. */ - { - .name = "[WD76C10] Amstrad MegaPC", - .internal_name = "megapc", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_WD76C10, - .init = machine_at_wd76c10_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 16000000, - .max_bus = 25000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 386SX machines which utilize the MCA bus */ - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 55SX", - .internal_name = "ibmps2_m55sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_55sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 8192, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 65SX", - .internal_name = "ibmps2_m65sx", - .type = MACHINE_TYPE_386SX, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_65sx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386SX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 8192, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, + .init = machine_at_quadt386sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_QUADTEL, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Most likely has Phonenix KBC firmware. */ + { + .name = "[ACC 2036] Packard Bell Legend 300SX", + .internal_name = "pbl300sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ACC_2036, + .init = machine_at_pbl300sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + /* The version number is a guess - we have no probe of this machine's controller. */ + .kbc_params = KBC_VEN_PHOENIX | 0x00010500, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &pbl300sx_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &oti037_pbl300sx_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a Holtek keyboard controller which clones AMI 'H'. */ + { + .name = "[ALi M1217] Acrosser AR-B1374", + .internal_name = "arb1374", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ALI_M1217, + .init = machine_at_arb1374_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the AMIKey-2 KBC - that's actually a guess since we + do not currently have a picture of the motherboard. */ + { + .name = "[ALi M1217] AAEON SBC-350A", + .internal_name = "sbc350a", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ALI_M1217, + .init = machine_at_sbc350a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[ALi M1217] Flytech A36", + .internal_name = "flytech386", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ALI_M1217, + .init = machine_at_flytech386_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tvga8900d_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a JetKey KBC without version, which is a clone of AMI '8'. */ + { + .name = "[ALi M1217] Chaintech 325AX", + .internal_name = "325ax", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ALI_M1217, + .init = machine_at_325ax_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00003800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a JetKey KBC without version, which is a clone of AMI '8'. */ + { + .name = "[ALi M1217] Chaintech 325AX (MR BIOS)", + .internal_name = "mr1217", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ALI_M1217, + .init = machine_at_mr1217_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00003800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses a NEC/Acer 90M002A. + This is a strange one - it has command AF but it returns 0x00. */ + { + .name = "[ALi M1409] Acer 100T", + .internal_name = "acer100t", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_ALI_M1409, + .init = machine_at_acer100t_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 16000000, + .max_bus = 25000000, /* Limited to 25 due a inaccurate cpu speed */ + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0, + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO , /* Machine has internal OTI 077 Video card*/ + .ram = { + .min = 2048, + .max = 16256, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ACER, + .kbc_p1 = 0x004008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &oti077_acer100t_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an AMI KBC firmware, the only photo of this is too low resolution + for me to read what's on the KBC chip, so I'm going to assume AMI 'F' + based on the other known HT18 AMI BIOS strings. */ + { + .name = "[HT18] Arche AMA-932J", + .internal_name = "ama932j", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_HT18, + .init = machine_at_ama932j_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &oti067_ama932j_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Most likely has a Phoenix MultiKey/42 keyboard controller. */ + { + .name = "[Intel 82335] ADI 386SX", + .internal_name = "adi386sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_INTEL_82335, + .init = machine_at_adi386sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00010500, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an AMI Keyboard BIOS PLUS KBC firmware ('8'). */ + { .name = "[Intel 82335] Shuttle 386SX", + .internal_name = "shuttle386sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_INTEL_82335, + .init = machine_at_shuttle386sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004400, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Commodore (CBM) KBC firmware, to be implemented as identical to + the IBM PS/2 Type 1 KBC firmware unless evidence emerges of any + proprietary commands. */ + { + .name = "[NEAT] Commodore SL386SX-16", + .internal_name = "cmdsl386sx16", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_cmdsl386sx16_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, + .ram = { + .min = 1024, + .max = 8192, + .step = 512 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + { + .name = "[NEAT] DTK PM-1630C", + .internal_name = "dtk386", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_NEAT, + .init = machine_at_neat_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + { .name = "[NEATsx] OKI if386AX30L", + .internal_name = "if386sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_NEAT_SX, + .init = machine_at_if386sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_KEYBOARD_JIS | MACHINE_AX, + .ram = { + .min = 1024, + .max = 4096, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + /* The version number is a guess - we have no probe of this machine's controller. */ + .kbc_params = KBC_VEN_PHOENIX | 0x00010500, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI KBC firmware of uknown revision, maybe '8'. */ + { + .name = "[OPTi 283] Silicon Valley Computer SVC386SX/P1", + .internal_name = "svc386sxp1", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_OPTI_283, + .init = machine_at_svc386sxp1_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00003800, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + { + .name = "[OPTi 291] DTK PPM-3333P", + .internal_name = "awardsx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_OPTI_291, + .init = machine_at_awardsx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Commodore (CBM) KBC firmware, to be implemented as identical to + the IBM PS/2 Type 1 KBC firmware unless evidence emerges of any + proprietary commands. */ + { + .name = "[SCAMP] Commodore SL386SX-25", + .internal_name = "cmdsl386sx25", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_VLSI_SCAMP, + .init = machine_at_cmdsl386sx25_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 8192, + .step = 512 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, /* The keyboard controller is part of the VL82c113. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5402_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* The closest BIOS string I find to this one's, differs only in one part, + and ends in -8, so I'm going to assume that this, too, has an AMI '8' + (AMI Keyboard BIOS Plus) KBC firmware. */ + { + .name = "[SCAMP] DataExpert 386SX", + .internal_name = "dataexpert386sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_VLSI_SCAMP, + .init = machine_at_dataexpert386sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 10000000, + .max_bus = 25000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004400, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* No proper pictures of the KBC exist, though it seems to have the IBM AT KBC + firmware. */ + { + .name = "[SCAMP] Dell System 333s/L", + .internal_name = "dells333sl", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_VLSI_SCAMP, + .init = machine_at_dells333sl_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 10000000, + .max_bus = 33333333, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 16384, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00002020, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &dells333sl_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5420_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* The only photo we have is too blurry to read the marking on the + the keyboard controller, but it's possibly a Phoenix. */ + { + .name = "[SCAMP] Samsung SPC-6033P", + .internal_name = "spc6033p", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_VLSI_SCAMP, + .init = machine_at_spc6033p_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 2048, + .max = 12288, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, /* Possibly. */ + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &ati28800k_spc6033p_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an unknown AMI KBC firmware, I'm going to assume 'F' until a + photo or real hardware BIOS string is found. */ + { + .name = "[SCATsx] Kaimei KMX-C-02", + .internal_name = "kmxc02", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_SCAT_SX, + .init = machine_at_kmxc02_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 512, + .max = 16384, + .step = 512 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, /* Possibly. */ + .kbc_params = KBC_VEN_AMI | 0x00004600, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Quadtel KBC firmware. */ + { + .name = "[WD76C10] Amstrad MegaPC", + .internal_name = "megapc", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_WD76C10, + .init = machine_at_wd76c10_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 16000000, + .max_bus = 25000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_QUADTEL, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 386SX machines which utilize the MCA bus */ + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 55SX", + .internal_name = "ibmps2_m55sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_55sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 8192, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 65SX", + .internal_name = "ibmps2_m65sx", + .type = MACHINE_TYPE_386SX, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_65sx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386SX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 8192, + .step = 1024 + }, + .nvrmask = 63, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, /* ALi M6117 machines */ - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[ALi M6117] Acrosser PJ-A511M", - .internal_name = "pja511m", - .type = MACHINE_TYPE_M6117, - .chipset = MACHINE_CHIPSET_ALI_M6117, - .init = machine_at_pja511m_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_M6117, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[ALi M6117] Protech ProX-1332", - .internal_name = "prox1332", - .type = MACHINE_TYPE_M6117, - .chipset = MACHINE_CHIPSET_ALI_M6117, - .init = machine_at_prox1332_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_M6117, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 486SLC machines */ - /* 486SLC machines with just the ISA slot */ - /* Has AMIKey H KBC firmware. */ - { - .name = "[OPTi 283] RYC Leopard LX", - .internal_name = "rycleopardlx", - .type = MACHINE_TYPE_486SLC, - .chipset = MACHINE_CHIPSET_OPTI_283, - .init = machine_at_rycleopardlx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_486SLC_IBM, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 386DX machines */ - /* Has a Jetkey V3, which identifies as a 'B'. */ - { - .name = "[ACC 2168] Juko AT046DX3", - .internal_name = "acc386", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_ACC_2168, - .init = machine_at_acc386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an AMI Keyboard BIOS PLUS KBC firmware ('8'). */ - { - .name = "[C&T 386/AT] ECS 386/32", - .internal_name = "ecs386", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_CT_386, - .init = machine_at_ecs386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[C&T 386/AT] Samsung SPC-6000A", - .internal_name = "spc6000a", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_CT_386, - .init = machine_at_spc6000a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[C&T 386/AT] Tandy 4000", - .internal_name = "tandy4000", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_CT_386, - .init = machine_at_tandy4000_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses Compaq KBC firmware. */ - { - .name = "[ISA] Compaq Deskpro 386 (September 1986)", - .internal_name = "deskpro386", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_deskpro386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX_DESKPRO386, - .block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD), - .min_bus = 16000000, - .max_bus = 25000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[ISA] Compaq Deskpro 386 (May 1988)", - .internal_name = "deskpro386_05_1988", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_deskpro386_05_1988_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX_DESKPRO386, - .block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD), - .min_bus = 16000000, - .max_bus = 25000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[ISA] Compaq Portable III (386)", - .internal_name = "portableiii386", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_portableiii386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 20000000, - .max_bus = 20000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_KEYBOARD, - .ram = { - .min = 1024, - .max = 14336, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &compaq_plasma_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] Micronics 09-00021 (Tandon BIOS)", - .internal_name = "micronics386", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_micronics386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM AT KBC firmware. */ - { - .name = "[ISA] Micronics 09-00021 (Phoenix BIOS)", - .internal_name = "micronics386px", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_DISCRETE, - .init = machine_at_micronics386px_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 512, - .max = 8192, - .step = 128 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Lance LT38C41 with AMI Megakey P KBC firmware */ - { - .name = "[ALi M1429] ECS Panda 386V", - .internal_name = "ecs386v", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_ALI_M1429, - .init = machine_at_ecs386v_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0, - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024, - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey 'F' KBC firmware. */ - { - .name = "[OPTi 391] DataExpert 386WB", - .internal_name = "dataexpert386wb", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_OPTI_391, - .init = machine_at_dataexpert386wb_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, /* Actual machine only supports 386DXes */ - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The board has a "ASII KB-100" which I was not able to find any information about, - but the BIOS sends commands C9 without a parameter and D5, both of which are - Phoenix MultiKey commands. */ - { - .name = "[OPTi 495SLC] U-Board OPTi 495SLC", - .internal_name = "award495", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_OPTI_495SLC, - .init = machine_at_opti495_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, /* Actual machine only supports 386DXes */ - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Award KBC firmware. */ - { - .name = "[SiS 310] ASUS 386/33-64K", - .internal_name = "asus3863364k", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_SIS_310, - .init = machine_at_asus3863364k_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware. */ - { - .name = "[SiS 310] ASUS ISA-386C", - .internal_name = "asus386", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_SIS_310, - .init = machine_at_asus386_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 386DX machines which utilize the MCA bus */ - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 80 (type 2)", - .internal_name = "ibmps2_m80", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_80_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_486BL, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/55 5551-Sxx, Txx stage 2 firmware. */ - { - .name = "[MCA] IBM PS/55 model 5550-T", - .internal_name = "ibmps55_m50t", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps55_model_50t_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_486BL, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD_JIS | MACHINE_APM, - .ram = { - .min = 2048, - .max = 16384, - .step = 2048 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/55 5551-V0x, V1x firmware. */ - { - .name = "[MCA] IBM PS/55 model 5550-V", - .internal_name = "ibmps55_m50v", - .type = MACHINE_TYPE_386DX, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps55_model_50v_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_486BL, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO | MACHINE_KEYBOARD_JIS | MACHINE_APM, - .ram = { - .min = 4096, - .max = 16384, - .step = 4096 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 386DX/486 machines */ - /* Has AMIKey F KBC firmware. The EFAR chipst is a rebrand of OPTi 495SX. */ - { - .name = "[OPTi 495SX] CAF Technology C747", - .internal_name = "c747", - .type = MACHINE_TYPE_386DX_486, - .chipset = MACHINE_CHIPSET_OPTI_495SX, - .init = machine_at_c747_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM | MACHINE_IDE, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware. */ - { - .name = "[OPTi 495SX] DataExpert SX495", - .internal_name = "ami495", - .type = MACHINE_TYPE_386DX_486, - .chipset = MACHINE_CHIPSET_OPTI_495SX, - .init = machine_at_opti495_ami_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware (it's just the MR BIOS for the above machine). */ - { - .name = "[OPTi 495SX] DataExpert SX495 (MR BIOS)", - .internal_name = "mr495", - .type = MACHINE_TYPE_386DX_486, - .chipset = MACHINE_CHIPSET_OPTI_495SX, - .init = machine_at_opti495_mr_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Winbond W83C42 with unknown firmware. */ - { - .name = "[ALi M1429G] DataExpert EXP4349", - .internal_name = "exp4349", - .type = MACHINE_TYPE_386DX_486, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_exp4349_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 70 (type 3)", - .internal_name = "ibmps2_m70_type3", - .type = MACHINE_TYPE_386DX_486, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_70_type3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 80 (type 3)", - .internal_name = "ibmps2_m80_type3", - .type = MACHINE_TYPE_386DX_486, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_80_axx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 486 machines - Socket 1 */ - /* Has Award KBC firmware. */ - { - .name = "[ZyMOS Poach] ASUS ISA-486C", - .internal_name = "isa486c", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_ZYMOS_POACH, - .init = machine_at_isa486c_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI KF KBC firmware. */ - { - .name = "[ZyMOS Poach] Genoa Unknown 486", - .internal_name = "genoa486", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_ZYMOS_POACH, - .init = machine_at_genoa486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI KF KBC firmware. */ - { - .name = "[OPTi 381] Gigabyte GA-486L", - .internal_name = "ga486l", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_OPTI_381, - .init = machine_at_ga486l_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 16384, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has JetKey 5 KBC Firmware - but the BIOS string ends in a hardcoded -F, and - the BIOS also explicitly expects command A1 to return a 'F', so it looks like - the JetKey 5 is a clone of AMIKey type F. */ - { - .name = "[CS4031] AMI 486 CS4031", - .internal_name = "cs4031", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_CT_CS4031, - .init = machine_at_cs4031_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses some variant of Phoenix MultiKey/42 as the Intel 8242 chip has a Phoenix - copyright. */ - { - .name = "[OPTi 498] Mylex MVI486", - .internal_name = "mvi486", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_OPTI_498, - .init = machine_at_mvi486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI KF KBC firmware. */ - { - .name = "[SiS 401] ASUS ISA-486", - .internal_name = "isa486", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_SIS_401, - .init = machine_at_isa486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware, per the screenshot in "How computers & MS-DOS work". */ - { - .name = "[SiS 401] Chaintech 433SC", - .internal_name = "sis401", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_SIS_401, - .init = machine_at_sis401_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware, per a photo of a monitor with the BIOS screen on - eBay. */ - { - .name = "[SiS 460] ABIT AV4", - .internal_name = "av4", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_SIS_460, - .init = machine_at_av4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Phoenix KBC firmware. */ - { - .name = "[SiS 471] AST Advantage! 40xxd", - .internal_name = "advantage40xxd", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_advantage40xxd_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 2 - }, - .bus_flags = MACHINE_PS2_VLB, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 4096, - .max = 36864, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5424_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware. */ - { - .name = "[Symphony SL42C460] DTK PKM-0031Y", - .internal_name = "dtk461", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_SYMPHONY_SL82C460, - .init = machine_at_dtk461_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The chip is a Lance LT38C41, a clone of the Intel 8041, and the BIOS sends - commands BC, BD, and C9 which exist on both AMIKey and Phoenix MultiKey/42, - but it does not write a byte after C9, which is consistent with AMIKey, so - this must have some form of AMIKey. */ - { - .name = "[VIA VT82C495] FIC 486-VC-HD", - .internal_name = "486vchd", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_VIA_VT82C495, - .init = machine_at_486vchd_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 64512, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VLSI VL82C113A SCAMP Combination I/O which holds the KBC. */ - { - .name = "[VLSI 82C480] HP Vectra 486VL", - .internal_name = "vect486vl", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_VLSI_VL82C480, - .init = machine_at_vect486vl_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 2048, - .max = 32768, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, /*Has SIO (sorta): VLSI VL82C113A SCAMP Combination I/O*/ - .vid_device = &gd5428_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VLSI VL82C114 Combination I/O which holds the KBC. */ - { - .name = "[VLSI 82C481] Siemens Nixdorf D824", - .internal_name = "d824", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_VLSI_VL82C481, - .init = machine_at_d824_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 2048, - .max = 32768, - .step = 2048 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5428_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VLSI VL82C113A SCAMP Combination I/O which holds the KBC. */ - { - .name = "[VLSI 82C486] Tulip 486 DC/DT", - .internal_name = "tuliptc38", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_VLSI_VL82C486, - .init = machine_at_tuliptc38_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 2048, - .max = 32768, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, /*Has SIO (sorta): VLSI VL82C113A SCAMP Combination I/O*/ - .vid_device = &gd5426_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[MCA] IBM PS/2 model 70 (type 4)", - .internal_name = "ibmps2_m70_type4", - .type = MACHINE_TYPE_486, - .chipset = MACHINE_CHIPSET_PROPRIETARY, - .init = machine_ps2_model_70_type4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK(CPU_i486SX, CPU_i486SX_SLENH, CPU_Am486SX, CPU_Cx486S), - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_MCA, - .flags = MACHINE_VIDEO | MACHINE_SOFTFLOAT_ONLY, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 63, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* 486 machines - Socket 2 */ - /* 486 machines with just the ISA slot */ - /* Uses some variant of Phoenix MultiKey/42 as the BIOS sends keyboard controller - command C7 (OR input byte with received data byte). */ - { - .name = "[ACC 2168] Packard Bell PB410A", - .internal_name = "pb410a", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_ACC_2168, - .init = machine_at_pb410a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM | MACHINE_GAMEPORT, - .ram = { - .min = 4096, - .max = 36864, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &ht216_32_pb410a_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses an ACER/NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware (V4.01H). */ - { - .name = "[ALi M1429G] Acer A1G", - .internal_name = "acera1g", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_acera1g_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 4096, - .max = 36864, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5428_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[ALi M1429G] Kaimei SA-486 VL-BUS M.B.", - .internal_name = "win486", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_winbios1429_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. - It also has those Ex commands also seen on the VIA VT82C42N (the BIOS - supposedly sends command EF. - The board was also seen in 2003 with a -H string - perhaps someone swapped - the KBC? */ - { - .name = "[ALi M1429] Olystar LIL1429", - .internal_name = "ali1429", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_ALI_M1429, - .init = machine_at_ali1429_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI MegaKey KBC. */ - { - .name = "[i420TX] J-Bond PCI400C-A", - .internal_name = "pci400ca", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_INTEL_420TX, - .init = machine_at_pci400ca_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_SCSI, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = &kbc_at_ami_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has a standalone AMI Megakey 1993, which is type 'P'. */ - { - .name = "[IMS 8848] Tekram G486IP", - .internal_name = "g486ip", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_IMS_8848, - .init = machine_at_g486ip_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[OPTi 499] Alaris Cobalt LPX", - .internal_name = "cobalt", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_OPTI_499, - .init = machine_at_cobalt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3 | CPU_PKG_486BL, - .block = CPU_BLOCK(CPU_P24T), - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_VLB, - .flags = MACHINE_APM | MACHINE_VIDEO | MACHINE_IDE_DUAL, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5428_vlb_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey-2 'H' KBC firmware. */ - { - .name = "[OPTi 499] Alaris COUGAR 486BL", - .internal_name = "cougar", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_OPTI_499, - .init = machine_at_cougar_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3 | CPU_PKG_486BL, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, /* Machine has IDE with controller: Appian ADI/2 */ - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses an Intel KBC with Phoenix MultiKey KBC firmware. */ - { - .name = "[SiS 461] DEC DECpc LPV", - .internal_name = "decpclpv", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_SIS_461, - .init = machine_at_decpclpv_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_86c805_onboard_vlb_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses a ???? KBC. */ - { - .name = "[SiS 461] Dell 466/NP", - .internal_name = "dell466np", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_SIS_461, - .init = machine_at_dell466np_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5428_onboard_vlb_device, - .snd_device = NULL, - .net_device = NULL - }, - /* The BIOS does not send any non-standard keyboard controller commands and wants - a PS/2 mouse, so it's an IBM PS/2 KBC (Type 1) firmware. */ - { - .name = "[SiS 461] IBM PS/ValuePoint 433DX/Si", - .internal_name = "valuepoint433", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_SIS_461, - .init = machine_at_valuepoint433_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VLSI VL82C113A SCAMP Combination I/O which holds the KBC. */ - { - .name = "[VLSI 82C480] ZEOS Martin", - .internal_name = "martin", - .type = MACHINE_TYPE_486_S2, - .chipset = MACHINE_CHIPSET_VLSI_VL82C480, - .init = machine_at_martin_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 486 machines - Socket 3 */ - /* 486 machines with just the ISA slot */ - /* Has a Fujitsu MBL8042H KBC. */ - { - .name = "[Contaq 82C596A] A-Trend 4GPV5", - .internal_name = "4gpv5", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_CONTAQ_82C596, - .init = machine_at_4gpv5_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI MegaKey KBC firmware. */ - { - .name = "[Contaq 82C597] Visionex Green-B", - .internal_name = "greenb", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_CONTAQ_82C597, - .init = machine_at_greenb_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Version 1.0 has an AMIKEY-2, version 2.0 has a VIA VT82C42N KBC. */ - { - .name = "[OPTi 895] Jetway J-403TG", - .internal_name = "403tg", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_OPTI_895_802G, - .init = machine_at_403tg_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. */ - { - .name = "[OPTi 895] Jetway J-403TG Rev D", - .internal_name = "403tg_d", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_OPTI_895_802G, - .init = machine_at_403tg_d_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. */ - { - .name = "[OPTi 895] Jetway J-403TG Rev D (MR BIOS)", - .internal_name = "403tg_d_mr", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_OPTI_895_802G, - .init = machine_at_403tg_d_mr_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Uses an NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware. */ - { - .name = "[SiS 461] Acer V10", - .internal_name = "acerv10", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_461, - .init = machine_at_acerv10_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_VLB, - .flags = MACHINE_IDE | MACHINE_APM, /* Machine has internal SCSI: Adaptec AIC-6360 */ - .ram = { - .min = 1024, - .max = 32768, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The BIOS string ends in -U, unless command 0xA1 (AMIKey get version) returns an - 'F', in which case, it ends in -F, so it has an AMIKey F KBC firmware. - The photo of the board shows an AMIKey KBC which is indeed F. */ - { - .name = "[SiS 471] ABIT AB-AH4", - .internal_name = "win471", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_win471_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey-2 'H' keyboard BIOS. */ - { - .name = "[SiS 471] AOpen Vi15G", - .internal_name = "vi15g", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_vi15g_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 471] ASUS VL/I-486SV2GX4", - .internal_name = "vli486sv2g", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_vli486sv2g_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. */ - { - .name = "[SiS 471] DTK PKM-0038S E-2", - .internal_name = "dtk486", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_dtk486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Lance LT38C41L with AMIKey F keyboard BIOS. */ - { - .name = "[SiS 471] Epox GXA486SG", - .internal_name = "ami471", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_ami471_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has MR (!) KBC firmware, which is a clone of the standard IBM PS/2 KBC firmware. */ - { - .name = "[SiS 471] SiS VL-BUS 471 REV. A1", - .internal_name = "px471", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_px471_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* TriGem AMIBIOS Pre-Color with TriGem AMI 'Z' keyboard controller */ - { - .name = "[SiS 471] TriGem 486G (Olympia-K)", - .internal_name = "tg486g", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_tg486g_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_VLB, - .flags = MACHINE_IDE | MACHINE_APM, /* Has internal video: Western Digital WD90C33-ZZ */ - .ram = { - .min = 4096, - .max = 40960, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Unknown revision phoenix 1993 multikey */ - { - .name = "[SiS 471] DEC Venturis 4xx", - .internal_name = "dvent4xx", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_SIS_471, - .init = machine_at_dvent4xx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE_DUAL | MACHINE_SUPER_IO | MACHINE_APM | MACHINE_VIDEO, - .ram = { - .min = 4096, - .max = 69632, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_phoenix_trio32_onboard_vlb_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[ALi M1429G] ECS AL486", - .internal_name = "ecsal486", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_ecsal486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 98304, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This uses a VIA VT82C42N KBC, which is a clone of type 'F' with additional commands */ - { - .name = "[ALi M1429G] Lanner Electronics AP-4100AA", - .internal_name = "ap4100aa", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_ap4100aa_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_AT, - .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* JETKey V5.0 */ - { - .name = "[ALi M1429G] A-Trend ATC-1762", - .internal_name = "atc1762", - .type = MACHINE_TYPE_486_S3, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_atc1762_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 486 machines which utilize the PCI bus */ - /* Machine with ALi M1429G chipset and M1435 southbridge */ - /* Has an AMIKEY-2 KBC. */ - { - .name = "[ALi M1429G] MSI MS-4134", - .internal_name = "ms4134", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_ms4134_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* TriGem machine with M1429G and PhoenixBIOS */ - { - .name = "[ALi M1429G] TriGem 486GP (Talent)", - .internal_name = "tg486gp", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1429G, - .init = machine_at_tg486gp_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[ALi M1489] AAEON SBC-490", - .internal_name = "sbc490", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1489, - .init = machine_at_sbc490_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tgui9440_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the ALi M1487/9's on-chip keyboard controller which clones a standard AT - KBC. */ - { - .name = "[ALi M1489] ABIT AB-PB4", - .internal_name = "abpb4", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1489, - .init = machine_at_abpb4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, /* Machine has a PISA slot */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the ALi M1487/9's on-chip keyboard controller which clones a standard AT - KBC. - The BIOS string always ends in -U, but the BIOS will send AMIKey commands 0xCA - and 0xCB if command 0xA1 returns a letter in the 0x5x or 0x7x ranges, so I'm - going to give it an AMI 'U' KBC. */ - { - .name = "[ALi M1489] AMI WinBIOS 486 PCI", - .internal_name = "win486pci", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1489, - .init = machine_at_win486pci_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the ALi M1487/9's on-chip keyboard controller which clones a standard AT - KBC. - The known BIOS string ends in -E, and the BIOS returns whatever command 0xA1 - returns (but only if command 0xA1 is instant response), so said ALi keyboard - controller likely returns 'E'. */ - { - .name = "[ALi M1489] MSI MS-4145", - .internal_name = "ms4145", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1489, - .init = machine_at_ms4145_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an ALi M5042 keyboard controller with Phoenix MultiKey/42 v1.40 firmware. */ - { - .name = "[ALi M1489] ESA TF-486", - .internal_name = "tf486", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1489, - .init = machine_at_tf486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an ALi M5042 with phoenix firmware like the ESA TF-486. */ - { - .name = "[ALi M1489] Acrosser AR-B1476", - .internal_name = "arb1476", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_ALI_M1489, - .init = machine_at_arb1476_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, /* Has onboard video: C&T F65545 */ - .ram = { - .min = 8192, - .max = 73728, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[OPTi 802G] IBM Aptiva 510/710/Vision", - .internal_name = "aptiva510", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_OPTI_895_802G, - .init = machine_at_aptiva510_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3_PC330, - .block = CPU_BLOCK_NONE, - .min_bus = 25000000, - .max_bus = 33333333, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5430_onboard_vlb_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[OPTi 802G] IBM PC 330 (type 6573)", - .internal_name = "pc330_6573", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_OPTI_895_802G, - .init = machine_at_pc330_6573_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3_PC330, - .block = CPU_BLOCK_NONE, - .min_bus = 25000000, - .max_bus = 33333333, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5430_onboard_vlb_device, - .snd_device = NULL, - .net_device = NULL - }, - /* has a Phoenix PLCC Multikey copyrighted 1993, version unknown. */ - { - .name = "[OPTi 895] Packard Bell PB450", - .internal_name = "pb450", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_OPTI_895_802G, - .init = machine_at_pb450_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &pb450_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5428_vlb_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[i420EX] ASUS PVI-486AP4", - .internal_name = "486ap4", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420EX, - .init = machine_at_486ap4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. */ - { - .name = "[i420EX] Intel Classic/PCI ED (Ninja)", - .internal_name = "ninja", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420EX, - .init = machine_at_ninja_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Phoenix Multikey/42 PS/2 KBC, but unknown version */ - { - .name = "[i420EX] Anigma BAT4IP3e", - .internal_name = "bat4ip3e", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420EX, - .init = machine_at_bat4ip3e_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[i420EX] Advanced Integration Research 486PI", - .internal_name = "486pi", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420EX, - .init = machine_at_486pi_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* absolutely no KBC info */ - { - .name = "[i420EX] ICS SB486P", - .internal_name = "sb486p", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420EX, - .init = machine_at_sb486p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* - This has an AMIKey (and an on-board NCR 53C810 PCI SCSI controller), thanks, eBay! - The keyboard port is AT. - */ - { - .name = "[i420TX] ASUS PCI/I-486SP3", - .internal_name = "486sp3", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420TX, - .init = machine_at_486sp3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE | MACHINE_SCSI | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. */ - { - .name = "[i420TX] Intel Classic/PCI (Alfredo)", - .internal_name = "alfredo", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420TX, - .init = machine_at_alfredo_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to another string seen on the UH19 website, this has AMI 'H' KBC. */ - { - .name = "[i420TX] AMI Super Voyager PCI", - .internal_name = "amis76", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420TX, - .init = machine_at_amis76_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. Also has a - SST 29EE010 Flash chip. */ - { - .name = "[i420ZX] ASUS PCI/I-486SP3G", - .internal_name = "486sp3g", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420ZX, - .init = machine_at_486sp3g_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_SCSI | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMI MEGAKey 'P' or 'R' keyboard controller. */ - { - .name = "[i420ZX] ICS SB486PV", - .internal_name = "sb486pv", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_INTEL_420ZX, - .init = machine_at_sb486pv_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - /* Has PCI but no user-facing slots. */ - .bus_flags = MACHINE_PCI, - .flags = MACHINE_PS2_KBC | MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM | MACHINE_PCI_INTERNAL, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &sb486pv_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5436_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This most likely has a standalone AMI Megakey 1993, which is type 'P', like the below Tekram board. */ - { - .name = "[IMS 8848] J-Bond PCI400C-B", - .internal_name = "pci400cb", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_IMS_8848, - .init = machine_at_pci400cb_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[SiS 496] Acer P3", - .internal_name = "acerp3", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_acerp3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO, - .ram = { - .min = 2048, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5434_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 496] ASUS PVI-486SP3C", - .internal_name = "486sp3c", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_486sp3c_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 261120, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 496] Lucky Star LS-486E", - .internal_name = "ls486e", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_ls486e_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_PS2_KBC | MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC. */ - { - .name = "[SiS 496] Micronics M4Li", - .internal_name = "m4li", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_m4li_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Revision 1 has a Lance LT38C41L, revision 2 has a Holtek HT6542B. Another variant with a Bestkey KBC might exist as well. */ - { - .name = "[SiS 496] Rise Computer R418", - .internal_name = "r418", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_r418_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_PS2_KBC | MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 261120, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has a Holtek HT6542B KBC and the BIOS does not send a single non-standard KBC command, so it - must be an ASIC that clones the standard IBM PS/2 KBC. */ - { - .name = "[SiS 496] Soyo 4SAW2", - .internal_name = "4saw2", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_4saw2_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK(CPU_i486SX, CPU_i486DX, CPU_Am486SX, CPU_Am486DX), - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 2048, - .max = 261120, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to MrKsoft, his real 4DPS has an AMIKey-2, which is an updated version - of type 'H'. There are other variants of the board with Holtek HT6542B KBCs. */ - { - .name = "[SiS 496] Zida Tomato 4DP", - .internal_name = "4dps", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_4dps_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, - .ram = { - .min = 2048, - .max = 261120, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* AMIKEY-2 */ - { - .name = "[SiS 496] MSI MS-4144", - .internal_name = "ms4144", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_SIS_496, - .init = machine_at_ms4144_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 5120, /* Hack: machine seems to break with less than 5 MBs of RAM */ - .max = 131072, - .step = 1024 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the UMC 88xx on-chip KBC. */ - { - .name = "[UMC 8881] A-Trend ATC-1415", - .internal_name = "atc1415", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_atc1415_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in - in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */ - { - .name = "[UMC 8881] Biostar MB-84xxUUD-A", - .internal_name = "84xxuuda", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_84xxuuda_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[UMC 8881] ECS Elite UM8810P-AIO", - .internal_name = "ecs486", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_ecs486_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_PS2_KBC | MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey Z(!) KBC firmware. */ - { - .name = "[UMC 8881] Epson ActionPC 2600", - .internal_name = "actionpc2600", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_actionpc2600_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 262144, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tgui9440_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in - in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */ - { - .name = "[UMC 8881] Epson ActionTower 8400", - .internal_name = "actiontower8400", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_actiontower8400_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO, - .ram = { - .min = 1024, - .max = 262144, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5430_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in - in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */ - { - .name = "[UMC 8881] PC Chips M919", - .internal_name = "m919", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_m919_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. Uses a mysterious I/O port C05. */ - { - .name = "[UMC 8881] Samsung SPC7700P-LW", - .internal_name = "spc7700plw", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_spc7700plw_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has a Holtek KBC. */ - { - .name = "[UMC 8881] Shuttle HOT-433A", - .internal_name = "hot433a", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_hot433a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 262144, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &hot433a_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Compaq Presario 7100 / 7200 Series, using MiTAC/Trigon PL4600C (486). */ - /* Has a VIA VT82C42N KBC. */ - { - .name = "[UMC 8881] Compaq Presario 7100/7200 Series 486", - .internal_name = "pl4600c", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_UMC_UM8881, - .init = machine_at_pl4600c_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_APM, - .ram = { - .min = 1024, - .max = 65536, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5430_onboard_pci_device, - .snd_device = &ess_1688_device, - .net_device = NULL - }, - /* Has a VIA VT82C406 KBC+RTC that likely has identical commands to the VT82C42N. */ - { - .name = "[VIA VT82C496G] DFI G486VPA", - .internal_name = "g486vpa", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_VIA_VT82C496G, - .init = machine_at_g486vpa_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC. */ - { - .name = "[VIA VT82C496G] FIC VIP-IO2", - .internal_name = "486vipio2", - .type = MACHINE_TYPE_486_S3_PCI, - .chipset = MACHINE_CHIPSET_VIA_VT82C496G, - .init = machine_at_486vipio2_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET3, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, - .ram = { - .min = 1024, - .max = 131072, - .step = 1024 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 486 machines - Miscellaneous */ - /* 486 machines which utilize the PCI bus */ - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[STPC Client] ITOX STAR", - .internal_name = "itoxstar", - .type = MACHINE_TYPE_486_MISC, - .chipset = MACHINE_CHIPSET_STPC_CLIENT, - .init = machine_at_itoxstar_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_STPC, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 75000000, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 1.0, - .max_multi = 1.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has internal video: ST STPC Atlas */ - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[STPC Consumer-II] Acrosser AR-B1423C", - .internal_name = "arb1423c", - .type = MACHINE_TYPE_486_MISC, - .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, - .init = machine_at_arb1423c_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_STPC, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: ST STPC Atlas */ - .ram = { - .min = 32768, - .max = 163840, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[STPC Consumer-II] Acrosser AR-B1479", - .internal_name = "arb1479", - .type = MACHINE_TYPE_486_MISC, - .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, - .init = machine_at_arb1479_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_STPC, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL | MACHINE_USB, /* Machine has internal video: ST STPC Atlas */ - .ram = { - .min = 32768, - .max = 163840, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[STPC Consumer-II] Lanner Electronics IAC-H488", - .internal_name = "iach488", - .type = MACHINE_TYPE_486_MISC, - .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, - .init = machine_at_iach488_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_STPC, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2, - .flags = MACHINE_IDE | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: ST STPC Atlas and NIC: Realtek RTL8139C+ */ - .ram = { - .min = 32768, - .max = 131072, - .step = 32768 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[STPC Elite] Advantech PCM-9340", - .internal_name = "pcm9340", - .type = MACHINE_TYPE_486_MISC, - .chipset = MACHINE_CHIPSET_STPC_ELITE, - .init = machine_at_pcm9340_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_STPC, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: SMI LynxEM+ 712 */ - .ram = { - .min = 32768, - .max = 98304, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[STPC Atlas] AAEON PCM-5330", - .internal_name = "pcm5330", - .type = MACHINE_TYPE_486_MISC, - .chipset = MACHINE_CHIPSET_STPC_ATLAS, - .init = machine_at_pcm5330_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_STPC, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 2.0, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: ST STPC Atlas */ - .ram = { - .min = 32768, - .max = 131072, - .step = 32768 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Socket 4 machines */ - /* 430LX */ - { - .name = "[i430LX] Acer V12P", - .internal_name = "v12p", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_v12p_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 196608, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &v12p_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware (AMIKey-2), per POST screen with BIOS string - shown in the manual. Has PS/2 mouse support with serial-style (DB9) - connector. - The boot block for BIOS recovery requires an unknown bit on port 805h - to be clear. */ - { - .name = "[i430LX] AMI Excalibur PCI Pentium", - .internal_name = "excaliburpci", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_excaliburpci_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_APM, /* Machine has internal SCSI */ - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware (AMIKey). */ - { - .name = "[i430LX] ASUS P/I-P5MP3", - .internal_name = "p5mp3", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_p5mp3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_PS2_KBC | MACHINE_APM, - .ram = { - .min = 2048, - .max = 196608, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[i430LX] Dell Dimension XPS P60", - .internal_name = "dellxp60", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_dellxp60_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[i430LX] Dell OptiPlex 560/L", - .internal_name = "opti560l", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_opti560l_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. - This is basically an Intel Batman (*NOT* Batman's Revenge) with a fancier - POST screen */ - { - .name = "[i430LX] AMBRA DP60 PCI", - .internal_name = "ambradp60", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_ambradp60_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has IBM PS/2 Type 1 KBC firmware. */ - { - .name = "[i430LX] IBM PS/ValuePoint P60", - .internal_name = "valuepointp60", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_valuepointp60_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_VIDEO_8514A | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &mach32_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. */ - { - .name = "[i430LX] Intel Premiere/PCI (Batman's Revenge)", - .internal_name = "revenge", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_revenge_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI MegaKey 'H' KBC firmware. */ - { - .name = "[i430LX] Gigabyte GA-586IS", - .internal_name = "586is", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_586is_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. */ - { - .name = "[i430LX] Packard Bell PB520R", - .internal_name = "pb520r", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_pb520r_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 8192, - .max = 139264, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5434_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* The M5Pi appears to have a Phoenix MultiKey KBC firmware according to photos. */ - { - .name = "[i430LX] Micronics M5Pi", - .internal_name = "m5pi", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_INTEL_430LX, - .init = machine_at_m5pi_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* OPTi 596/597 */ - /* This uses an AMI KBC firmware in PS/2 mode (it sends command A5 with the - PS/2 "Load Security" meaning), most likely MegaKey as it sends command AF - (Set Extended Controller RAM) just like the later Intel AMI BIOS'es. */ - { - .name = "[OPTi 597] AMI Excalibur VLB", - .internal_name = "excalibur", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_OPTI_547_597, - .init = machine_at_excalibur_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 60000000, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_VLB, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* OPTi 596/597/822 */ - /* Has a VIA VT82C42N KBC with AMI 'F' firmware */ - { - .name = "[OPTi 597] AT&T Globalyst 330 (Pentium)", - .internal_name = "globalyst330_p5", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_OPTI_547_597, - .init = machine_at_globalyst330_p5_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_APM, - .ram = { - .min = 8192, - .max = 65536, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has AMIKey 'F' KBC firmware. */ - { - .name = "[OPTi 597] Supermicro P5VL-PCI", - .internal_name = "p5vl", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_OPTI_547_597, - .init = machine_at_p5vl_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SiS 50x */ - /* This has some form of AMI MegaKey as it uses keyboard controller command 0xCC. */ - { - .name = "[SiS 501] AMI Excalibur PCI-II Pentium ISA", - .internal_name = "excaliburpci2", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_SIS_501, - .init = machine_at_excaliburpci2_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 501] ASUS PCI/I-P5SP4", - .internal_name = "p5sp4", - .type = MACHINE_TYPE_SOCKET4, - .chipset = MACHINE_CHIPSET_SIS_501, - .init = machine_at_p5sp4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET4, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Socket 5 machines */ - /* 430NX */ - /* This has the Phoenix MultiKey KBC firmware. */ - { - .name = "[i430NX] Intel Premiere/PCI II (Plato)", - .internal_name = "plato", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_plato_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Same as Intel Premiere PCI/II, but with a Dell OEM BIOS */ - { - .name = "[i430NX] Dell Dimension XPS Pxxx", - .internal_name = "dellplato", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_dellplato_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - { - .name = "[i430NX] Siemens-Nixdorf D842", - .internal_name = "d842", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_d842_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has onboard video: TLI ET4000/w32p */ - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &d842_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. - This is basically an Intel Premiere/PCI II with a fancier POST screen. */ - { - .name = "[i430NX] AMBRA DP90 PCI", - .internal_name = "ambradp90", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_ambradp90_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 2048, - .max = 131072, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI 'H' KBC firmware. */ - { - .name = "[i430NX] ASUS PCI/I-P54NP4", - .internal_name = "p54np4", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_p54np4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE /*| MACHINE_SCSI */ | MACHINE_APM, - .ram = { - .min = 2048, - .max = 524288, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI 'H' KBC firmware. */ - { - .name = "[i430NX] Gigabyte GA-586IP", - .internal_name = "586ip", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_586ip_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_APM, - .ram = { - .min = 2048, - .max = 262144, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMI MegaKey KBC firmware. */ - { - .name = "[i430NX] Teknor TEK-932", - .internal_name = "tek932", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430NX, - .init = machine_at_tek932_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE | MACHINE_APM, - .ram = { - .min = 2048, - .max = 262144, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 430FX */ - /* Uses an ACER/NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware (V5.0). */ - { - .name = "[i430FX] Acer V30", - .internal_name = "acerv30", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_acerv30_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey F KBC firmware. */ - { - .name = "[i430FX] AMI Apollo", - .internal_name = "apollo", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_apollo_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a National Semiconductor PC87332VLJ Super I/O with AMIKey 'F' KBC firmware. */ - { - .name = "[i430FX] Dell OptiPlex GXL/GXM", - .internal_name = "optiplexgxl", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_optiplexgxl_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_Cx6x86), - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_APM, /* Video: S3 Trio64V+ (86C765), Sound: Creative ViBRA 16S (CT2504), Network: 3Com ETHERLINK III (3C509B) */ - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, - .snd_device = &sb_vibra16s_onboard_device, - .net_device = NULL /* not yet emulated */ - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430FX] Intel Advanced/ZP (Zappa)", - .internal_name = "zappa", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_zappa_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The BIOS sends KBC command B3 which indicates an AMI (or VIA VT82C42N) KBC. */ - { - .name = "[i430FX] NEC PowerMate V", - .internal_name = "powermatev", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_powermatev_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey Z(!) KBC firmware. */ - { - .name = "[i430FX] TriGem Hawk", - .internal_name = "hawk", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_hawk_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* KBC On-Chip the VT82C406MV. */ - { - .name = "[i430FX] FIC PT-2000", - .internal_name = "pt2000", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_pt2000_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* OPTi 596/597 */ - /* This uses an AMI KBC firmware in PS/2 mode (it sends command A5 with the - PS/2 "Load Security" meaning), most likely MegaKey as it sends command AF - (Set Extended Controller RAM) just like the later Intel AMI BIOS'es. */ - { - .name = "[OPTi 597] TMC PAT54PV", - .internal_name = "pat54pv", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_OPTI_547_597, - .init = machine_at_pat54pv_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_VLB, - .flags = MACHINE_APM, - .ram = { - .min = 2048, - .max = 65536, - .step = 2048 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* OPTi 596/597/822 */ - { - .name = "[OPTi 597] Shuttle HOT-543", - .internal_name = "hot543", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_OPTI_547_597, - .init = machine_at_hot543_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PCIV, - .flags = MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - { - .name = "[OPTi 597] Northgate Computer Systems Elegance Pentium 90", - .internal_name = "ncselp90", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_OPTI_547_597, - .init = machine_at_ncselp90_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCIV, - .flags = MACHINE_APM | MACHINE_IDE_DUAL | MACHINE_SUPER_IO, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SiS 85C50x */ - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 501] ASUS PCI/I-P54SP4", - .internal_name = "p54sp4", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_SIS_501, - .init = machine_at_p54sp4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86), - .min_bus = 40000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 501] BCM SQ-588", - .internal_name = "sq588", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_SIS_501, - .init = machine_at_sq588_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_PENTIUMMMX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This machine has a Winbond W83C842 KBC */ - { - .name = "[SiS 501] Gemlight GMB-P54SPS", - .internal_name = "p54sps", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_SIS_501, - .init = machine_at_p54sps_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - CPU_BLOCK(CPU_PENTIUMMMX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = &kbc_at_ami_device, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[SiS 5501] MSI MS-5109", - .internal_name = "ms5109", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_SIS_5501, - .init = machine_at_ms5109_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - CPU_BLOCK(CPU_PENTIUMMMX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey Z(!) KBC firmware. */ - { - .name = "[SiS 5501] TriGem Torino", - .internal_name = "torino", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_SIS_5501, - .init = machine_at_torino_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - CPU_BLOCK(CPU_PENTIUMMMX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3520, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 1.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &tgui9660_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - - /* UMC 889x */ - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[UMC 889x] Shuttle HOT-539", - .internal_name = "hot539", - .type = MACHINE_TYPE_SOCKET5, - .chipset = MACHINE_CHIPSET_UMC_UM8890BF, - .init = machine_at_hot539_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86), - .min_bus = 40000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3600, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Socket 7 (Single Voltage) machines */ - /* 430FX */ - /* This has an AMIKey-2, which is an updated version of type 'H'. - This also seems to be revision 2.1 with the FDC37C665 SIO. */ - { - .name = "[i430FX] ASUS P/I-P55TP4XE", - .internal_name = "p54tp4xe", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_p54tp4xe_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3600, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[i430FX] ASUS P/I-P55TP4XE (MR BIOS)", - .internal_name = "p54tp4xe_mr", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_p54tp4xe_mr_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3600, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware. The KBC itself seems to differ between an AMIKEY-2 and a Winbond W83C42. */ - { - .name = "[i430FX] DataExpert EXP8551", - .internal_name = "exp8551", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_exp8551_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430FX] Gateway 2000 Thor", - .internal_name = "gw2katx", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_gw2katx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, /* Machine has optional onboard sound: Crystal CS4232-KQ */ - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C932 Super I/O chip with on-chip KBC with AMI - MegaKey (revision '5') KBC firmware. */ - { - .name = "[i430FX] HP Vectra VL 5 Series 4", - .internal_name = "vectra54", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_vectra54_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_phoenix_trio64_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430FX] Intel Advanced/ATX (Thor)", - .internal_name = "thor", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_thor_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_GAMEPORT, /* Machine has optional onboard sound: Crystal CS4232-KQ */ - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430FX] Intel Advanced/ATX (Thor) (MR BIOS)", - .internal_name = "mrthor", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_mrthor_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, /* Machine has optional onboard video: S3 Trio64V+ and optional onboard sound: Crystal CS4232-KQ */ - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430FX] Intel Advanced/EV (Endeavor)", - .internal_name = "endeavor", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_endeavor_init, - .p1_handler = NULL, - .gpio_handler = machine_at_endeavor_gpio_handler, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_phoenix_trio64_onboard_pci_device, - .snd_device = &sb_vibra16s_onboard_device, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[i430FX] MSI MS-5119", - .internal_name = "ms5119", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_ms5119_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This most likely uses AMI MegaKey KBC firmware as well due to having the same - Super I/O chip (that has the KBC firmware on it) as eg. the Advanced/EV. */ - { - .name = "[i430FX] Packard Bell PB640", - .internal_name = "pb640", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_pb640_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5440_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC. */ - { - .name = "[i430FX] PC Partner MB500N", - .internal_name = "mb500n", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_mb500n_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an AMI MegaKey 'H' KBC firmware (1992). */ - { - .name = "[i430FX] QDI FMB", - .internal_name = "fmb", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430FX, - .init = machine_at_fmb_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 430HX */ - /* Has SST Flash. */ - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i430HX] Acer V35N", - .internal_name = "acerv35n", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_acerv35n_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3450, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey-2 or VIA VT82C42N KBC (depending on the revision) with AMIKEY 'F' KBC firmware. */ - { - .name = "[i430HX] AOpen AP53", - .internal_name = "ap53", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_ap53_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3450, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 2.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* [TEST] Has a VIA 82C42N KBC, with AMIKey F KBC firmware. */ - { - .name = "[i430HX] Biostar MB-8500TUC", - .internal_name = "8500tuc", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_8500tuc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - { - .name = "[i430HX] Siemens-Nixdorf D943", - .internal_name = "d943", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_d943_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_GAMEPORT | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &d943_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5436_onboard_pci_device, - .snd_device = &sb_vibra16c_onboard_device, - .net_device = NULL - }, - - /* 430VX */ - /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI - MegaKey (revision '5') KBC firmware. */ - { - .name = "[i430VX] Gateway 2000 Mailman", - .internal_name = "gw2kma", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_gw2kma_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */ - .ram = { - .min = 8192, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &sb_vibra16c_onboard_device, - .net_device = NULL - }, - - /* SiS 5501 */ - /* Has the Lance LT38C41 KBC. */ - { - .name = "[SiS 5501] Chaintech 5SBM/5SBM2 (M103)", - .internal_name = "5sbm2", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_SIS_5501, - .init = machine_at_5sbm2_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &c5sbm2_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SiS 5511 */ - /* Has AMIKey H KBC firmware (AMIKey-2). */ - { - .name = "[SiS 5511] AOpen AP5S", - .internal_name = "ap5s", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_SIS_5511, - .init = machine_at_ap5s_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = &ap5s_device, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an SMC FDC37C669QF Super I/O. */ - { - .name = "[SiS 5511] IBM PC 140 (type 6260)", - .internal_name = "pc140_6260", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_SIS_5511, - .init = machine_at_pc140_6260_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX, CPU_PENTIUMMMX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, - .ram = { - .min = 8192, - .max = 131072, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &gd5436_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware (AMIKey-2). */ - { - .name = "[SiS 5511] MSI MS-5124", - .internal_name = "ms5124", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_SIS_5511, - .init = machine_at_ms5124_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has Megakey 'R' KBC */ - { - .name = "[SiS 5511] AMI Atlas PCI-II", - .internal_name = "amis727", - .type = MACHINE_TYPE_SOCKET7_3V, - .chipset = MACHINE_CHIPSET_SIS_5511, - .init = machine_at_amis727_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 3380, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Socket 7 (Dual Voltage) machines */ - /* 430HX */ - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i430HX] Acer AcerPower Ultima", - .internal_name = "acerm3a", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_acerm3a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_Cx6x86MX), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal SCSI */ - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware (AMIKey-2). */ - { - .name = "[i430HX] ASUS P/I-P55T2P4", - .internal_name = "p55t2p4", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_p55t2p4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 4.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The base board has a Holtek HT6542B with the AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i430HX] ASUS P/I-P65UP5 (C-P55T2D)", - .internal_name = "p65up5_cp55t2d", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_p65up5_cp55t2d_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i430HX] Micronics M7S-Hi", - .internal_name = "m7shi", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_m7shi_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430HX] Intel TC430HX (Tucson)", - .internal_name = "tc430hx", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_tc430hx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal sound: Yamaha YMF701-S */ - .ram = { - .min = 8192, - .max = 524288, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_virge_375_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* OEM version of Intel TC430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */ - { - .name = "[i430HX] Toshiba Infinia 7201", - .internal_name = "infinia7200", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_infinia7200_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal sound: Yamaha YMF701-S */ - .ram = { - .min = 8192, - .max = 524288, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_virge_375_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* OEM-only Intel CU430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */ - { - .name = "[i430HX] Intel CU430HX (Cumberland)", - .internal_name = "cu430hx", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_cu430hx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_USB, /* Machine has internal video: ATI Mach64GT 3D Rage and internal NIC: Intel 82557 */ - .ram = { - .min = 8192, - .max = 524288, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &sb_vibra16c_onboard_device, - .net_device = NULL - }, - /* OEM-only Intel CU430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */ - { - .name = "[i430HX] Toshiba Equium 5200D", - .internal_name = "equium5200", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_equium5200_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_USB, /* Machine has internal video: ATI Mach64GT 3D Rage and internal NIC: Intel 82557 */ - .ram = { - .min = 8192, - .max = 524288, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &sb_vibra16c_onboard_device, - .net_device = NULL - }, - /* Unknown PS/2 KBC. */ - { - .name = "[i430HX] Radisys EPC-2102", - .internal_name = "epc2102", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_epc2102_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . - Yes, this is an Intel AMI BIOS with a fancy splash screen. */ - { - .name = "[i430HX] Sony Vaio PCV-90", - .internal_name = "pcv90", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_pcv90_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */ - .ram = { - .min = 8192, - .max = 524288, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* [TEST] The board doesn't seem to have a KBC at all, which probably means it's an on-chip one on the PC87306 SIO. - A list on a Danish site shows the BIOS as having a -0 string, indicating non-AMI KBC firmware. */ - { - .name = "[i430HX] Supermicro P55T2S", - .internal_name = "p55t2s", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430HX, - .init = machine_at_p55t2s_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 524288, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 430VX */ - /* This has the VIA VT82C42N or Holtek HT6542B KBC. */ - { - .name = "[i430VX] AOpen AP5VM", - .internal_name = "ap5vm", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_ap5vm_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2600, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SCSI | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware (AMIKey-2) on a BestKey KBC. */ - { - .name = "[i430VX] ASUS P/I-P55TVP4", - .internal_name = "p55tvp4", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_p55tvp4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The BIOS does not send a single non-standard KBC command, so it must have a standard IBM - PS/2 KBC firmware or a clone thereof. */ - { - .name = "[i430VX] Azza PT-5IV", - .internal_name = "5ivg", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_5ivg_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* [TEST] Has AMIKey 'F' KBC firmware on a VIA VT82C42N KBC. */ - { - .name = "[i430VX] Biostar MB-8500TVX-A", - .internal_name = "8500tvxa", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_8500tvxa_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2600, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C932QF Super I/O chip with on-chip KBC with AMI - MegaKey (revision '5') KBC firmware. */ - { - .name = "[i430VX] Compaq Presario 224x", - .internal_name = "presario2240", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_presario2240_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI, - .ram = { - .min = 16384, - .max = 49152, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_trio64v2_dx_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C931APM Super I/O chip with on-chip KBC with Compaq - KBC firmware. */ - { - .name = "[i430VX] Compaq Presario 45xx", - .internal_name = "presario4500", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_presario4500_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI, - .ram = { - .min = 16384, - .max = 49152, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_trio64v2_dx_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI - MegaKey (revision '5') KBC firmware. */ - { - .name = "[i430VX] Dell Dimension XPS Pxxxa/Mxxxa", - .internal_name = "dellhannibalp", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_dellhannibalp_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, /* Machine has internal video: S3 Trio64V+ */ - .ram = { - .min = 8192, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has AMIKey H KBC firmware (AMIKey-2). */ - { - .name = "[i430VX] ECS P5VX-B", - .internal_name = "p5vxb", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_p5vxb_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI - MegaKey (revision '5') KBC firmware. */ - { - .name = "[i430VX] Epox P55-VA", - .internal_name = "p55va", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_p55va_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI - MegaKey (revision '5') KBC firmware. */ - { - .name = "[i430VX] Gateway 2000 Hitman", - .internal_name = "gw2kte", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_gw2kte_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2200, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: S3 Trio64V+ */ - .ram = { - .min = 8192, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &sb_vibra16c_onboard_device, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i430VX] HP Brio 80xx", - .internal_name = "brio80xx", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_brio80xx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 2200, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has internal video: S3 Trio64V2/DX */ - .ram = { - .min = 8192, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i430VX] Packard Bell Multimedia C110 (PB680/PB682/PB685)", - .internal_name = "pb680", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_pb680_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 131072, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i430VX] Packard Bell Multimedia M415 (PB810)", - .internal_name = "pb810", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_pb810_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 4.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM, /* Machine has internal video: S3 Trio64V2/DX */ - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the AMIKey 'H' firmware, possibly AMIKey-2. Photos show it with a BestKey, so it - likely clones the behavior of AMIKey 'H'. */ - { - .name = "[i430VX] PC Partner MB520N", - .internal_name = "mb520n", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_mb520n_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2600, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has a Holtek KBC and the BIOS does not send a single non-standard KBC command, so it - must be an ASIC that clones the standard IBM PS/2 KBC. */ - { - .name = "[i430VX] Shuttle HOT-557", - .internal_name = "430vx", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430VX, - .init = machine_at_i430vx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_GAMEPORT | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 4096, - .max = 131072, - .step = 4096 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 430TX */ - /* The BIOS sends KBC command B8, CA, and CB, so it has an AMI KBC firmware. */ - { - .name = "[i430TX] ADLink NuPRO-591/592", - .internal_name = "nupro592", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_nupro592_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 1900, - .max_voltage = 2800, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &chips_69000_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the AMIKey KBC firmware, which is an updated 'F' type (YM430TX is based on the TX97). */ - { - .name = "[i430TX] ASUS TX97", - .internal_name = "tx97", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_tx97_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* - According to Dell specifications, it can have either National Semiconductor - PC87307 or PC87309 Super I/O. All known instances have the former, although - other similar Dells of the era have pinouts for accompanying either so this - likely also does. - - The KBC is either an AMI '5' MegaKey, Phoenix MultiKey/42 1.37, or Phoenix - MultiKey/42i 4.16. - */ - { - .name = "[i430TX] Dell OptiPlex GN+", - .internal_name = "optiplexgn", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_optiplexgn_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI, - /* Video: S3 86C785 (Trio64V2/GX), ethernet: 3C905. */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO | MACHINE_SOUND, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - /* Stop-gap measure until the Trio64V2/GX is emulated, as both use the same VBIOS. */ - .vid_device = &s3_trio64v2_dx_onboard_pci_device, - .snd_device = &sb_vibra16xv_onboard_device, - .net_device = NULL - }, - /* [TEST] Has AMI Megakey '5' KBC firmware on the SM(S)C FDC37C67x Super I/O chip. */ - { - .name = "[i430TX] Gateway E-1000", - .internal_name = "tomahawk", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_tomahawk_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_NIC | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_trio64v2_dx_onboard_pci_device, - .snd_device = &cs4236b_device, - .net_device = &pcnet_am79c973_onboard_device - }, - /* This has the AMIKey KBC firmware, which is an updated 'F' type. */ - { - .name = "[i430TX] Intel YM430TX (Yamamoto)", - .internal_name = "ym430tx", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_ym430tx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 4096, - .max = 262144, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* - PhoenixBIOS 4.0 Rel 6.0 for 430TX, has onboard Yamaha YMF701 which - is not emulated yet. - - Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. - */ - { - .name = "[i430TX] Micronics Thunderbolt", - .internal_name = "thunderbolt", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_thunderbolt_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2), - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - /* Machine has internal sound: Yamaha YMF701-S */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C67x Super I/O chip with on-chip KBC with Phoenix or - AMIKey-2 KBC firmware. */ - { - .name = "[i430TX] NEC Mate NX MA23C", - .internal_name = "ma23c", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_ma23c_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2700, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCIONLY | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal video: Cirrus Logic CL-GD5465 and internal sound: Yamaha YMF715 */ - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has the Phoenix MultiKey KBC firmware. */ - { - .name = "[i430TX] Packard Bell PB790", - .internal_name = "an430tx", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_an430tx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */ - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The BIOS sends KBC command BB and expects it to output a byte, which is AMI KBC behavior. - A picture shows a VIA VT82C42N KBC though, so it could be a case of that KBC with AMI firmware. */ - { - .name = "[i430TX] PC Partner MB540N", - .internal_name = "mb540n", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_mb540n_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2700, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 4096, - .max = 262144, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Award BIOS, PS2, EDO, SDRAM, 4 PCI, 4 ISA, VIA VT82C42N KBC */ - { - .name = "[i430TX] Soltek SL-56A5", - .internal_name = "56a5", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_56a5_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 4096, - .max = 262144, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* [TEST] Has AMIKey 'H' KBC firmware. */ - { - .name = "[i430TX] Supermicro P5MMS98", - .internal_name = "p5mms98", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_p5mms98_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 4096, - .max = 262144, - .step = 4096 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* [TEST] Has AMIKey 'H' KBC firmware. */ - { - .name = "[i430TX] TriGem RD535 (Richmond)", - .internal_name = "richmond", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_INTEL_430TX, - .init = machine_at_richmond_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Apollo VPX */ - /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA VPX] FIC VA-502", - .internal_name = "ficva502", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_VPX, - .init = machine_at_ficva502_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Apollo VP3 */ - /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA VP3] FIC PA-2012", - .internal_name = "ficpa2012", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_VP3, - .init = machine_at_ficpa2012_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 55000000, - .max_bus = 75000000, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA VP3] PC Partner VIA809DS", - .internal_name = "via809ds", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_VP3, - .init = machine_at_via809ds_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SiS 5571 */ - /* Has the SiS 5571 chipset with on-chip KBC. */ - { - .name = "[SiS 5571] Daewoo CD520", - .internal_name = "cb52xsi", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_SIS_5571, - .init = machine_at_cb52xsi_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the SiS 5571 chipset with on-chip KBC. */ - { - .name = "[SiS 5571] MSI MS-5146", - .internal_name = "ms5146", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_SIS_5571, - .init = machine_at_ms5146_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the SiS 5571 chipset with on-chip KBC. */ - { - .name = "[SiS 5571] Rise R534F", - .internal_name = "r534f", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_SIS_5571, - .init = machine_at_r534f_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 55000000, - .max_bus = 83333333, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 393216, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SiS 5581 */ - /* Has the SiS 5581 chipset with on-chip KBC. */ - { - .name = "[SiS 5581] ASUS SP97-XV", - .internal_name = "sp97xv", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_SIS_5581, - .init = machine_at_sp97xv_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the SiS 5581 chipset with on-chip KBC. */ - { - .name = "[SiS 5581] BCM SQ-578", - .internal_name = "sq578", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_SIS_5581, - .init = machine_at_sq578_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SiS 5591 */ - /* Has the SiS 5591 chipset with on-chip KBC. */ - { - .name = "[SiS 5591] MSI MS-5172", - .internal_name = "ms5172", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_SIS_5591, - .init = machine_at_ms5172_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 75000000, - .min_voltage = 2500, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* ALi ALADDiN IV+ */ - /* Has the ALi M1543 southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN IV+] Biostar M5ATA", - .internal_name = "m5ata", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, - .init = machine_at_m5ata_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 4.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the ALi M1543 southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN IV+] MSI MS-5164", - .internal_name = "ms5164", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, - .init = machine_at_ms5164_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 83333333, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the ALi M1543 southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN IV+] PC Chips M560", - .internal_name = "m560", - .type = MACHINE_TYPE_SOCKET7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, - .init = machine_at_m560_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 83333333, - .min_voltage = 2100, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 3.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Super Socket 7 machines */ - /* ALi ALADDiN V */ - /* Has the ALi M1543C southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN V] ASUS P5A", - .internal_name = "p5a", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, - .init = machine_at_p5a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 120000000, - .min_voltage = 2000, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: ESS Solo-1 */ - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Is the exact same as the Matsonic MS6260S. Has the ALi M1543C southbridge - with on-chip KBC. */ - { - .name = "[ALi ALADDiN V] PC Chips M579", - .internal_name = "m579", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, - .init = machine_at_m579_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 2000, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal sound: C-Media CMI8330 */ - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* M1534c kbc */ - { - .name = "[ALi ALADDiN V] Gateway Lucas", - .internal_name = "gwlucas", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, - .init = machine_at_gwlucas_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 2000, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCIONLY | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal video: ATI 3D Rage Pro Turbo AGP and sound: Ensoniq ES1373 */ - .ram = { - .min = 8192, - .max = 262144, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &es1373_onboard_device, - .net_device = NULL - }, - /* Has the ALi M1543C southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN V] Gigabyte GA-5AA", - .internal_name = "5aa", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, - .init = machine_at_5aa_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 140000000, - .min_voltage = 1300, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the ALi M1543C southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN V] Gigabyte GA-5AX", - .internal_name = "5ax", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, - .init = machine_at_5ax_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 140000000, - .min_voltage = 1300, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Apollo MVP3 */ - /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA MVP3] AOpen AX59 Pro", - .internal_name = "ax59pro", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, - .init = machine_at_ax59pro_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 124242424, - .min_voltage = 1300, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA MVP3] FIC VA-503+", - .internal_name = "ficva503p", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, - .init = machine_at_mvp3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 124242424, - .min_voltage = 2000, - .max_voltage = 3200, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the VIA VT82C686A southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA MVP3] FIC VA-503A", - .internal_name = "ficva503a", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, - .init = machine_at_ficva503a_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 124242424, - .min_voltage = 1800, - .max_voltage = 3100, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_A97 | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the VIA VT82C686A southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA MVP3] Soyo 5EMA PRO", - .internal_name = "5emapro", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, - .init = machine_at_5emapro_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 124242424, - .min_voltage = 2000, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the VIA VT82C596A southbridge with on-chip KBC identical to the VIA - VT82C42N. Sadly likely abuses cache on Cyrix 6x86MX and MII CPUs (Cyrix MII being what most socket 7 eMachines PCs used) , so they are blocked and it's thus named after the only known eMachines with an AMD K6-2 CPU here */ - { - .name = "[VIA MVP3] eMachines eTower 300k", - .internal_name = "delhi3", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, - .init = machine_at_delhi3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_Cx6x86MX), - .min_bus = 66666667, - .max_bus = 124242424, - .min_voltage = 2000, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Has internal video: ATI 3D Rage IIc AGP (Rage 2) */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_SOUND | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cs4235_onboard_device, - .net_device = NULL - }, - - /* SiS 5591 */ - /* Has the SiS 5591 chipset with on-chip KBC. */ - { - .name = "[SiS 5591] Gigabyte GA-5SG100", - .internal_name = "5sg100", - .type = MACHINE_TYPE_SOCKETS7, - .chipset = MACHINE_CHIPSET_SIS_5591, - .init = machine_at_5sg100_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 100000000, - .min_voltage = 2000, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Socket 8 machines */ - /* 450KX */ - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[i450KX] AOpen AP61", - .internal_name = "ap61", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_450KX, - .init = machine_at_ap61_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ - { - .name = "[i450KX] ASUS P/I-P6RP4", - .internal_name = "p6rp4", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_450KX, - .init = machine_at_p6rp4_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI, /* Machine has AMB */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440FX */ - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i440FX] Acer V60N", - .internal_name = "acerv60n", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_acerv60n_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 393216, - .step = 8192 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The base board has a Holtek HT6542B with AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i440FX] ASUS P/I-P65UP5 (C-P6ND)", - .internal_name = "p65up5_cp6nd", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_p65up5_cp6nd_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N with likely AMIKey 'F' KBC firmware. */ - { - .name = "[i440FX] Biostar MB-8600TTC", - .internal_name = "8600ttc", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_8600ttc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 2900, - .max_voltage = 3300, - .min_multi = 2.0, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* It's an Intel VS440FX with a Dell OEM BIOS */ - { - .name = "[i440FX] Dell Dimension XPS Pro___n", - .internal_name = "dellvenus", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_dellvenus_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cs4236_onboard_device, - .net_device = NULL - }, - /* It's an Intel VS440FX with a Gateway 2000 OEM BIOS */ - { - .name = "[i440FX] Gateway 2000 Venus", - .internal_name = "gw2kvenus", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_gw2kvenus_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cs4236_onboard_device, - .net_device = NULL - }, - /* Has the AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i440FX] Gigabyte GA-686NX", - .internal_name = "686nx", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_686nx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i440FX] Intel AP440FX (Apollo)", - .internal_name = "ap440fx", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_ap440fx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_SOUND | MACHINE_VIDEO | MACHINE_USB, /* Machine has internal video: S3 ViRGE/DX and sound: Crystal CS4236B */ - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &s3_virge_325_onboard_pci_device, - .snd_device = &cs4236b_onboard_device, - .net_device = NULL - }, - /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the - PC87306 Super I/O chip, command 0xA1 returns '5'. - Command 0xA0 copyright string: (C)1994 AMI . */ - { - .name = "[i440FX] Intel VS440FX (Venus)", - .internal_name = "vs440fx", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_vs440fx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 3.5 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cs4236_onboard_device, - .net_device = NULL - }, - /* Has the AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i440FX] LG IBM Multinet x61 (MSI MS-6106)", - .internal_name = "lgibmx61", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_lgibmx61_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2500, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, /* Machine has internal SCSI: Adaptec AIC-7880U */ - .ram = { - .min = 40960, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i440FX] Micronics M6Mi", - .internal_name = "m6mi", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_m6mi_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2900, - .max_voltage = 3300, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Creative Vibra 16C */ - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a VIA VT82C42N KBC with likely AMI MegaKey firmware. */ - { - .name = "[i440FX] PC Partner MB600N", - .internal_name = "mb600n", - .type = MACHINE_TYPE_SOCKET8, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_mb600n_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET8, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 66666667, - .min_voltage = 2100, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Slot 1 machines */ - /* ALi ALADDiN V */ - /* Has the ALi M1543C southbridge with on-chip KBC. */ - { - .name = "[ALi ALADDiN-PRO II] PC Chips M729", - .internal_name = "m729", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_ALI_ALADDIN_PRO_II, - .init = machine_at_m729_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: C-Media CMI8330 */ - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440FX */ - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i440FX] Acer V62X", - .internal_name = "acerv62x", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_acerv62x_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 83333333, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 393216, - .step = 8192 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* The base board has a Holtek HT6542B KBC with AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i440FX] ASUS P/I-P65UP5 (C-PKND)", - .internal_name = "p65up5_cpknd", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_p65up5_cpknd_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 66666667, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* This has a Holtek KBC and the BIOS does not send a single non-standard KBC command, so it - must be an ASIC that clones the standard IBM PS/2 KBC. */ - { - .name = "[i440FX] ASUS KN97", - .internal_name = "kn97", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440FX, - .init = machine_at_kn97_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 83333333, - .min_voltage = 2800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 127, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440LX */ - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440LX] ABIT LX6", - .internal_name = "lx6", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440LX, - .init = machine_at_lx6_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 60000000, - .max_bus = 83333333, - .min_voltage = 1500, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a National Semiconductor PC87307 Super I/O with on-chip KBC, which has one of these - firmwares: AMI '5' MegaKey, Phoenix MultiKey/42 1.37, or Phoenix MultiKey/42i 4.16. */ - { - .name = "[i440LX] Dell OptiPlex GXa", - .internal_name = "optiplexgxa", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440LX, - .init = machine_at_optiplexgxa_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_CYRIX3S), - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 5.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Video: ATi 3D Rage Pro, Network: 3Com 3C905, Sound: Crystal CS4236B */ - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, /* not yet emulated */ - .snd_device = &cs4236b_device, - .net_device = NULL /* not yet emulated */ - }, - /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix - MultiKey/42 (version 1.38) KBC firmware. */ - { - .name = "[i440LX] Micronics Spitfire", - .internal_name = "spitfire", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440LX, - .init = machine_at_spitfire_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal sound: Yamaha YMF701 */ - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a SM(S)C FDC37C67x Super I/O chip with on-chip KBC with Phoenix or - AMIKey-2 KBC firmware. */ - { - .name = "[i440LX] NEC Mate NX MA30D/23D", - .internal_name = "ma30d", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440LX, - .init = machine_at_ma30d_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 66666667, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCIONLY | MACHINE_BUS_USB, /* Has internal video: SGS Thompson Riva 128 AGP, network: NEC PK-UG-X006 (Intel 82558B chip) and sound: OAK Audia 3D (OTI-610) for MA23D or YAMAHA YMF724 for MA30D */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440EX */ - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440EX] QDI EXCELLENT II", - .internal_name = "p6i440e2", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440EX, - .init = machine_at_p6i440e2_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 83333333, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 3.0, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440BX */ - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] ASUS P2B-LS", - .internal_name = "p2bls", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_p2bls_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 50000000, - .max_bus = 112121212, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal SCSI: Adaptec AIC-7890AB */ - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] ASUS P3B-F", - .internal_name = "p3bf", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_p3bf_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ + /* Has IBM PS/2 Type 1 KBC firmware. */ { - .name = "[i440BX] ABIT BX6", - .internal_name = "bx6", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_bx6_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1500, - .max_voltage = 3500, - .min_multi = 2.0, - .max_multi = 5.5 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] ABIT BF6", - .internal_name = "bf6", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_bf6_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] AOpen AX6BC", - .internal_name = "ax6bc", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_ax6bc_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 112121212, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] Gigabyte GA-686BX", - .internal_name = "686bx", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_686bx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i440BX] LG IBM Multinet i x7G (MSI MS-6119)", - .internal_name = "lgibmx7g", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_lgibmx7g_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] Supermicro P6SBA", - .internal_name = "p6sba", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_p6sba_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a National Semiconductors PC87309 Super I/O chip with on-chip KBC - with most likely AMIKey-2 KBC firmware. */ - { - .name = "[i440BX] Tyan Tsunami ATX", - .internal_name = "s1846", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_s1846_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 112121212, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal sound: Ensoniq ES1371 */ - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &es1371_onboard_device, - .net_device = NULL - }, - - /* 440ZX */ - /* Has a SM(S)C FDC37M60x Super I/O chip with on-chip KBC with most likely - AMIKey-2 KBC firmware. */ - { - .name = "[i440ZX] HP Vectra VEi 8", - .internal_name = "vei8", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440ZX, - .init = machine_at_vei8_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: Matrox MGA-G200 and sound: Crystal CS4820 */ - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440ZX] MSI MS-6168", - .internal_name = "ms6168", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440ZX, - .init = machine_at_ms6168_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* AGP is reserved for the internal video */ - .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &voodoo_3_2000_agp_onboard_8m_device, - .snd_device = &es1373_onboard_device, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440ZX] Packard Bell Bora Pro (MSI MS-6168)", - .internal_name = "borapro", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440ZX, - .init = machine_at_borapro_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* AGP is reserved for the internal video */ - .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &voodoo_3_2000_agp_onboard_8m_device, - .snd_device = &es1373_onboard_device, - .net_device = NULL - }, - - /* SMSC VictoryBX-66 */ - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[SMSC VictoryBX-66] A-Trend ATC6310BXII", - .internal_name = "atc6310bxii", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, - .init = machine_at_atc6310bxii_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* VIA Apollo Pro */ - /* Has the VIA VT82C596B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA Apollo Pro] FIC KA-6130", - .internal_name = "ficka6130", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, - .init = machine_at_ficka6130_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: ESS ES1938S */ - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[VIA Apollo Pro 133] ASUS P3V133", - .internal_name = "p3v133", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, - .init = machine_at_p3v133_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[VIA Apollo Pro 133A] ASUS P3V4X", - .internal_name = "p3v4x", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, - .init = machine_at_p3v4x_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK(CPU_PENTIUMPRO), - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 2097152, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[VIA Apollo Pro 133A] BCM GT694VA", - .internal_name = "gt694va", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, - .init = machine_at_gt694va_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Ensoniq ES1373 */ - .ram = { - .min = 8192, - .max = 3145728, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &es1373_onboard_device, - .net_device = NULL - }, - - /* SiS (5)600 */ - /* Has the SiS (5)600 chipset with on-chip KBC. */ - { - .name = "[SiS 5600] Freetech/Flexus P6F99", - .internal_name = "p6f99", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_SIS_5600, - .init = machine_at_p6f99_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Ensoniq ES1373 */ - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &es1373_onboard_device, - .net_device = NULL - }, - /* Has the SiS (5)600 chipset with on-chip KBC. */ - { - .name = "[SiS 5600] PC Chips M747", - .internal_name = "m747", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_SIS_5600, - .init = machine_at_m747_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .name = "[ALi M6117] Acrosser PJ-A511M", + .internal_name = "pja511m", + .type = MACHINE_TYPE_M6117, + .chipset = MACHINE_CHIPSET_ALI_M6117, + .init = machine_at_pja511m_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_M6117, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[ALi M6117] Protech ProX-1332", + .internal_name = "prox1332", + .type = MACHINE_TYPE_M6117, + .chipset = MACHINE_CHIPSET_ALI_M6117, + .init = machine_at_prox1332_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_M6117, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 486SLC machines */ + /* 486SLC machines with just the ISA slot */ + /* Has AMIKey H KBC firmware. */ + { + .name = "[OPTi 283] RYC Leopard LX", + .internal_name = "rycleopardlx", + .type = MACHINE_TYPE_486SLC, + .chipset = MACHINE_CHIPSET_OPTI_283, + .init = machine_at_rycleopardlx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_486SLC_IBM, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 386DX machines */ + /* Uses Compaq KBC firmware. */ + { + .name = "[ISA] Compaq Deskpro 386 (September 1986)", + .internal_name = "deskpro386", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_deskpro386_init, + .p1_handler = machine_compaq_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX_DESKPRO386, + .block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD), + .min_bus = 16000000, + .max_bus = 25000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_COMPAQ, + .kbc_p1 = 0x000000f4, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Compaq KBC firmware. */ + { + .name = "[ISA] Compaq Deskpro 386 (May 1988)", + .internal_name = "deskpro386_05_1988", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_deskpro386_05_1988_init, + .p1_handler = machine_compaq_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX_DESKPRO386, + .block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD), + .min_bus = 16000000, + .max_bus = 25000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_COMPAQ, + .kbc_p1 = 0x000000f4, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses Compaq KBC firmware. */ + { + .name = "[ISA] Compaq Portable III (386)", + .internal_name = "portableiii386", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_portableiii386_init, + .p1_handler = machine_compaq_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 20000000, + .max_bus = 20000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_KEYBOARD, + .ram = { + .min = 1024, + .max = 14336, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_COMPAQ, + .kbc_p1 = 0x000000f4, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &compaq_plasma_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Phoenix MultiKey/42 KBC firmware. */ + { + .name = "[ISA] Micronics 09-00021 (Tandon BIOS)", + .internal_name = "micronics386", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_micronics386_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM AT KBC firmware. */ + { + .name = "[ISA] Micronics 09-00021 (Phoenix BIOS)", + .internal_name = "micronics386px", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_at_micronics386px_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 512, + .max = 8192, + .step = 128 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Jetkey V3, which we currently lack a probe of, but an + old test by Carlos showed it as being 'F'. */ + { + .name = "[ACC 2168] Juko AT046DX3", + .internal_name = "acc386", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_ACC_2168, + .init = machine_at_acc386_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an AMI Keyboard BIOS PLUS KBC firmware ('8'). */ + { + .name = "[C&T 386/AT] ECS 386/32", + .internal_name = "ecs386", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_CT_386, + .init = machine_at_ecs386_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00003800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Unknown - we give it an AT Award keyboard controller. */ + { + .name = "[C&T 386/AT] Samsung SPC-6000A", + .internal_name = "spc6000a", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_CT_386, + .init = machine_at_spc6000a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AWARD | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* I found one board picture of it and I can't really read the + keyboard controller markings from it, but it may be Phoenix. */ + { + .name = "[C&T 386/AT] Tandy 4000", + .internal_name = "tandy4000", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_CT_386, + .init = machine_at_tandy4000_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Lance LT38C41 that clones an AMIKEY ('F'). */ + { + .name = "[ALi M1429] ECS Panda 386V", + .internal_name = "ecs386v", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_ALI_M1429, + .init = machine_at_ecs386v_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0, + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024, + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, /* TODO: Lance LT38C41. */ + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey 'F' KBC firmware. */ + { + .name = "[OPTi 391] DataExpert 386WB", + .internal_name = "dataexpert386wb", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_OPTI_391, + .init = machine_at_dataexpert386wb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, /* Actual machine only supports 386DXes */ + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | KBC_FLAG_IS_CLONE | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The board has a "ASII KB-100" which I was not able to find any information about, + but the BIOS sends commands C9 without a parameter and D5, both of which are + Phoenix MultiKey commands. */ + { + .name = "[OPTi 495SLC] U-Board OPTi 495SLC", + .internal_name = "award495", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_OPTI_495SLC, + .init = machine_at_opti495_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, /* Actual machine only supports 386DXes */ + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Award KBC firmware. */ + { + .name = "[SiS 310] ASUS 386/33-64K", + .internal_name = "asus3863364k", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_SIS_310, + .init = machine_at_asus3863364k_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AWARD | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey F KBC firmware. */ + { + .name = "[SiS 310] ASUS ISA-386C", + .internal_name = "asus386", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_SIS_310, + .init = machine_at_asus386_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 386DX machines which utilize the MCA bus */ + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 80 (type 2)", + .internal_name = "ibmps2_m80", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_80_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_486BL, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/55 5551-Sxx, Txx stage 2 firmware. */ + { + .name = "[MCA] IBM PS/55 model 5550-T", + .internal_name = "ibmps55_m50t", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps55_model_50t_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_486BL, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD_JIS | MACHINE_APM, + .ram = { + .min = 2048, + .max = 16384, + .step = 2048 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/55 5551-V0x, V1x firmware. */ + { + .name = "[MCA] IBM PS/55 model 5550-V", + .internal_name = "ibmps55_m50v", + .type = MACHINE_TYPE_386DX, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps55_model_50v_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_486BL, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO | MACHINE_KEYBOARD_JIS | MACHINE_APM, + .ram = { + .min = 4096, + .max = 16384, + .step = 4096 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 386DX/486 machines */ + /* Winbond W83C42 - ASIC that clones AMI 'F'. */ + { + .name = "[ALi M1429G] DataExpert EXP4349", + .internal_name = "exp4349", + .type = MACHINE_TYPE_386DX_486, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_exp4349_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00021400, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey F KBC firmware. The EFAR chipst is a rebrand of OPTi 495SX. */ + { + .name = "[OPTi 495SX] CAF Technology C747", + .internal_name = "c747", + .type = MACHINE_TYPE_386DX_486, + .chipset = MACHINE_CHIPSET_OPTI_495SX, + .init = machine_at_c747_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM | MACHINE_IDE, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_SIEMENS, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey 'F' or MR BIOS 'M' KBC firmware, we give it the latter + for the sake of keyboard controller diversity. */ + { + .name = "[OPTi 495SX] DataExpert SX495", + .internal_name = "ami495", + .type = MACHINE_TYPE_386DX_486, + .chipset = MACHINE_CHIPSET_OPTI_495SX, + .init = machine_at_opti495_ami_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004d00, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey 'F' or MR BIOS 'M' KBC firmware + (it's just the MR BIOS for the above machine). */ + { + .name = "[OPTi 495SX] DataExpert SX495 (MR BIOS)", + .internal_name = "mr495", + .type = MACHINE_TYPE_386DX_486, + .chipset = MACHINE_CHIPSET_OPTI_495SX, + .init = machine_at_opti495_mr_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004d00, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 70 (type 3)", + .internal_name = "ibmps2_m70_type3", + .type = MACHINE_TYPE_386DX_486, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_70_type3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 80 (type 3)", + .internal_name = "ibmps2_m80_type3", + .type = MACHINE_TYPE_386DX_486, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_80_axx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 486 machines - Socket 1 */ + /* Has JetKey V5 KBC Firmware - we now have a photo of the board and its POST + screen, so we can match JetKey V5 to 'F'. */ + { + .name = "[CS4031] AMI 486 CS4031", + .internal_name = "cs4031", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_CT_CS4031, + .init = machine_at_cs4031_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI KF KBC firmware. */ + { + .name = "[OPTi 381] Gigabyte GA-486L", + .internal_name = "ga486l", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_OPTI_381, + .init = machine_at_ga486l_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses the AMIKey 'F' keyboard controller firmware. */ + { + .name = "[OPTi 493] Silicon Valley Computer 486WB", + .internal_name = "svc486wb", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_OPTI_493, + .init = machine_at_svc486wb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 20000000, + .max_bus = 33333333, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses some variant of Phoenix MultiKey/42 as the Intel 8242 chip has a Phoenix + copyright. */ + { + .name = "[OPTi 498] Mylex MVI486", + .internal_name = "mvi486", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_OPTI_498, + .init = machine_at_mvi486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI KF KBC firmware. */ + { + .name = "[SiS 401] ASUS ISA-486", + .internal_name = "isa486", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_SIS_401, + .init = machine_at_isa486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware, per the screenshot in "How computers & MS-DOS work". + Also seen with an AMI 'F'. */ + { + .name = "[SiS 401] Chaintech 433SC", + .internal_name = "sis401", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_SIS_401, + .init = machine_at_sis401_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Seen with both AMIKey F and AMIKey-2 H KBC firmwares. */ + { + .name = "[SiS 460] ABIT AV4", + .internal_name = "av4", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_SIS_460, + .init = machine_at_av4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Phoenix KBC firmware. */ + { + .name = "[SiS 471] AST Advantage! 40xxd", + .internal_name = "advantage40xxd", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_advantage40xxd_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 2 + }, + .bus_flags = MACHINE_PS2_VLB, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 4096, + .max = 36864, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5424_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey F KBC firmware. */ + { + .name = "[Symphony SL42C460] DTK PKM-0031Y", + .internal_name = "dtk461", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_SYMPHONY_SL82C460, + .init = machine_at_dtk461_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The chip is a Lance LT38C41, a clone of the Intel 8041, and the BIOS sends + commands BC, BD, and C9 which exist on both AMIKey and Phoenix MultiKey/42, + but it does not write a byte after C9, which is consistent with AMIKey, so + this must have some form of AMIKey. + This is also seen with a genuine AMI 'F' (one of the photos on TheRetroWeb). */ + { + .name = "[VIA VT82C495] FIC 486-VC-HD", + .internal_name = "486vchd", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_VIA_VT82C495, + .init = machine_at_486vchd_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 64512, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VLSI VL82C113A SCAMP Combination I/O which holds the KBC. */ + { + .name = "[VLSI 82C480] HP Vectra 486VL", + .internal_name = "vect486vl", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_VLSI_VL82C480, + .init = machine_at_vect486vl_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 2048, + .max = 32768, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, /* The keyboard controller is part of the VL82c113. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, /*Has SIO (sorta): VLSI VL82C113A SCAMP Combination I/O*/ + .vid_device = &gd5428_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a standard IBM PS/2 KBC firmware or a clone thereof. */ + { + .name = "[VLSI 82C481] Siemens Nixdorf D824", + .internal_name = "d824", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_VLSI_VL82C481, + .init = machine_at_d824_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 2048, + .max = 32768, + .step = 2048 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5428_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VLSI VL82C113A SCAMP Combination I/O which holds the KBC. */ + { + .name = "[VLSI 82C486] Tulip 486 DC/DT", + .internal_name = "tuliptc38", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_VLSI_VL82C486, + .init = machine_at_tuliptc38_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 2048, + .max = 32768, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, /*Has SIO (sorta): VLSI VL82C113A SCAMP Combination I/O*/ + .vid_device = &gd5426_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Award KBC firmware. */ + { + .name = "[ZyMOS Poach] ASUS ISA-486C", + .internal_name = "isa486c", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_ZYMOS_POACH, + .init = machine_at_isa486c_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AWARD | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI KF KBC firmware. */ + { + .name = "[ZyMOS Poach] Genoa Unknown 486", + .internal_name = "genoa486", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_ZYMOS_POACH, + .init = machine_at_genoa486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 16384, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[MCA] IBM PS/2 model 70 (type 4)", + .internal_name = "ibmps2_m70_type4", + .type = MACHINE_TYPE_486, + .chipset = MACHINE_CHIPSET_PROPRIETARY, + .init = machine_ps2_model_70_type4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET1, + .block = CPU_BLOCK(CPU_i486SX, CPU_i486SX_SLENH, CPU_Am486SX, CPU_Cx486S), + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_MCA, + .flags = MACHINE_VIDEO | MACHINE_SOFTFLOAT_ONLY, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 63, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_IBM, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* 486 machines - Socket 2 */ + /* 486 machines with just the ISA slot */ + /* Uses some variant of Phoenix MultiKey/42 as the BIOS sends keyboard controller + command C7 (OR input byte with received data byte). */ + { + .name = "[ACC 2168] Packard Bell PB410A", + .internal_name = "pb410a", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_ACC_2168, + .init = machine_at_pb410a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM | MACHINE_GAMEPORT, + .ram = { + .min = 4096, + .max = 36864, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900 /* Guess. */, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &ht216_32_pb410a_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses an ACER/NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware (V4.01H). */ + { + .name = "[ALi M1429G] Acer A1G", + .internal_name = "acera1g", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_acera1g_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 4096, + .max = 36864, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ACER, + .kbc_p1 = 0x004008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5428_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[ALi M1429G] Kaimei SA-486 VL-BUS M.B.", + .internal_name = "win486", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_winbios1429_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has JetKey V5.0 KBC Firmware which clones an AMI 'H'. + The board was also seen 2003 with a -F string. */ + { + .name = "[ALi M1429] Olystar LIL1429", + .internal_name = "ali1429", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_ALI_M1429, + .init = machine_at_ali1429_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI 'H' KBC. */ + { + .name = "[i420TX] J-Bond PCI400C-A", + .internal_name = "pci400ca", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_INTEL_420TX, + .init = machine_at_pci400ca_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_SCSI, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a standalone AMI Megakey 1993, which is type 'P'. */ + { + .name = "[IMS 8848] Tekram G486IP", + .internal_name = "g486ip", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_IMS_8848, + .init = machine_at_g486ip_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey-2 'H' KBC firmware. */ + { + .name = "[OPTi 499] Alaris Cobalt LPX", + .internal_name = "cobalt", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_OPTI_499, + .init = machine_at_cobalt_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3 | CPU_PKG_486BL, + .block = CPU_BLOCK(CPU_P24T), + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_VLB, + .flags = MACHINE_APM | MACHINE_VIDEO | MACHINE_IDE_DUAL, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5428_vlb_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey-2 'H' KBC firmware. */ + { + .name = "[OPTi 499] Alaris COUGAR 486BL", + .internal_name = "cougar", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_OPTI_499, + .init = machine_at_cougar_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3 | CPU_PKG_486BL, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, /* Machine has IDE with controller: Appian ADI/2 */ + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses an Intel KBC with Phoenix MultiKey KBC firmware. */ + { + .name = "[SiS 461] DEC DECpc LPV", + .internal_name = "decpclpv", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_SIS_461, + .init = machine_at_decpclpv_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_86c805_onboard_vlb_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses a ???? KBC. */ + { + .name = "[SiS 461] Dell 466/NP", + .internal_name = "dell466np", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_SIS_461, + .init = machine_at_dell466np_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00002420, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5428_onboard_vlb_device, + .snd_device = NULL, + .net_device = NULL + }, + /* The BIOS does not send any non-standard keyboard controller commands and wants + a PS/2 mouse, so it's an IBM PS/2 KBC (Type 1) firmware. */ + { + .name = "[SiS 461] IBM PS/ValuePoint 433DX/Si", + .internal_name = "valuepoint433", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_SIS_461, + .init = machine_at_valuepoint433_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VLSI VL82C113A SCAMP Combination I/O which holds the KBC. */ + { + .name = "[VLSI 82C480] ZEOS Martin", + .internal_name = "martin", + .type = MACHINE_TYPE_486_S2, + .chipset = MACHINE_CHIPSET_VLSI_VL82C480, + .init = machine_at_martin_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 486 machines - Socket 3 */ + /* 486 machines with just the ISA slot */ + /* JETKey V5.0 */ + { + .name = "[ALi M1429G] A-Trend ATC-1762", + .internal_name = "atc1762", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_atc1762_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | KBC_FLAG_IS_CLONE | KBC_FLAG_IS_ASIC | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[ALi M1429G] ECS AL486", + .internal_name = "ecsal486", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_ecsal486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 98304, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This uses a VIA VT82C42N KBC, which is a clone of type 'F' with additional commands. + It's really an ASIC clone of the Award KBC, which is itself an extended clone of AMI 'F'. */ + { + .name = "[ALi M1429G] Lanner Electronics AP-4100AA", + .internal_name = "ap4100aa", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_ap4100aa_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_AT, + .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Fujitsu MBL8042H KBC. */ + { + .name = "[Contaq 82C596A] A-Trend 4GPV5", + .internal_name = "4gpv5", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_CONTAQ_82C596, + .init = machine_at_4gpv5_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI MegaKey 'P' KBC firmware. */ + { + .name = "[Contaq 82C597] Visionex Green-B", + .internal_name = "greenb", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_CONTAQ_82C597, + .init = machine_at_greenb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Version 1.0 has an AMIKEY-2, version 2.0 has a VIA VT82C42N KBC. */ + { + .name = "[OPTi 895] Jetway J-403TG", + .internal_name = "403tg", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_OPTI_895_802G, + .init = machine_at_403tg_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This is Version 2.0 - it has a VIA VT82C42N KBC. */ + { + .name = "[OPTi 895] Jetway J-403TG Rev D", + .internal_name = "403tg_d", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_OPTI_895_802G, + .init = machine_at_403tg_d_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. */ + { + .name = "[OPTi 895] Jetway J-403TG Rev D (MR BIOS)", + .internal_name = "403tg_d_mr", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_OPTI_895_802G, + .init = machine_at_403tg_d_mr_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Uses an Acer 90M002A. + This is a strange one - it has command AF but it returns 0x00. */ + { + .name = "[SiS 461] Acer V10", + .internal_name = "acerv10", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_461, + .init = machine_at_acerv10_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_VLB, + .flags = MACHINE_IDE | MACHINE_APM, /* Machine has internal SCSI: Adaptec AIC-6360 */ + .ram = { + .min = 1024, + .max = 32768, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ACER, + .kbc_p1 = 0x004008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The BIOS string ends in -U, unless command 0xA1 (AMIKey get version) returns an + 'F', in which case, it ends in -F, so it has an AMIKey F KBC firmware. + The photo of the board shows an AMIKey KBC which is indeed F. */ + { + .name = "[SiS 471] ABIT AB-AH4", + .internal_name = "win471", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_win471_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey-2 'H' keyboard BIOS. */ + { + .name = "[SiS 471] AOpen Vi15G", + .internal_name = "vi15g", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_vi15g_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[SiS 471] ASUS VL/I-486SV2GX4", + .internal_name = "vli486sv2g", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_vli486sv2g_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an Intel 82C42PE with Phoenix MultiKey/C42 KBC firmware, copyrighted 1993. */ + { + .name = "[SiS 471] DEC Venturis 4xx", + .internal_name = "dvent4xx", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_dvent4xx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE_DUAL | MACHINE_SUPER_IO | MACHINE_APM | MACHINE_VIDEO, + .ram = { + .min = 4096, + .max = 69632, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED, + .default_jumpered_ecp_dma = 4, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_phoenix_trio32_onboard_vlb_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has JetKey v5.0G KBC Firmware which is a clone of AMIKey type F. */ + { + .name = "[SiS 471] DTK PKM-0038S E-2", + .internal_name = "dtk486", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_dtk486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | KBC_FLAG_IS_CLONE | KBC_FLAG_IS_ASIC | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Lance LT38C41L with AMIKey F keyboard BIOS. */ + { + .name = "[SiS 471] Epox GXA486SG", + .internal_name = "ami471", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_ami471_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | KBC_FLAG_IS_CLONE | KBC_FLAG_IS_ASIC | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has MR BIOS V307UT KBC firmware, which, bizarrely enough, is actually a genuine AMI 'H'. */ + { + .name = "[SiS 471] SiS VL-BUS 471 REV. A1", + .internal_name = "px471", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_px471_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* TriGem AMIBIOS Pre-Color with TriGem AMI 'Z' keyboard controller */ + { + .name = "[SiS 471] TriGem 486G (Olympia-K)", + .internal_name = "tg486g", + .type = MACHINE_TYPE_486_S3, + .chipset = MACHINE_CHIPSET_SIS_471, + .init = machine_at_tg486g_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_VLB, + .flags = MACHINE_IDE | MACHINE_APM, /* Has internal video: Western Digital WD90C33-ZZ */ + .ram = { + .min = 4096, + .max = 40960, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI_TRIGEM | 0x00005a00, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 486 machines - Socket 3 PCI */ + /* 486 machines which utilize the PCI bus */ + /* Machine with ALi M1429G chipset and M1435 southbridge */ + /* Has an AMIKEY-2 KBC which is type 'H'. */ + { + .name = "[ALi M1429G] MSI MS-4134", + .internal_name = "ms4134", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_ms4134_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCIV, + .flags = MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* TriGem machine with M1429G and PhoenixBIOS */ + { + .name = "[ALi M1429G] TriGem 486GP (Talent)", + .internal_name = "tg486gp", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1429G, + .init = machine_at_tg486gp_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI_TRIGEM | 0x00005a00, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[ALi M1489] AAEON SBC-490", + .internal_name = "sbc490", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1489, + .init = machine_at_sbc490_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_0 | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tgui9440_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the ALi M1487/9's on-chip keyboard controller which clones a standard AT + KBC. */ + { + .name = "[ALi M1489] ABIT AB-PB4", + .internal_name = "abpb4", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1489, + .init = machine_at_abpb4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, /* Machine has a PISA slot */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ALI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an ALi M5042 with phoenix firmware like the ESA TF-486. */ + { + .name = "[ALi M1489] Acrosser AR-B1476", + .internal_name = "arb1476", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1489, + .init = machine_at_arb1476_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, /* Has onboard video: C&T F65545 */ + .ram = { + .min = 8192, + .max = 73728, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00014000, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the ALi M1487/9's on-chip keyboard controller which clones a standard AT + KBC. + The BIOS string always ends in -U, but the BIOS will send AMIKey commands 0xCA + and 0xCB if command 0xA1 returns a letter in the 0x5x or 0x7x ranges, so I'm + going to give it an AMI 'U' KBC. */ + { + .name = "[ALi M1489] AMI WinBIOS 486 PCI", + .internal_name = "win486pci", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1489, + .init = machine_at_win486pci_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00005500, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an ALi M5042 keyboard controller with Phoenix MultiKey/42 v1.40 firmware. */ + { + .name = "[ALi M1489] ESA TF-486", + .internal_name = "tf486", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1489, + .init = machine_at_tf486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00014000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the ALi M1487/9's on-chip keyboard controller which clones a standard AT + KBC. + The known BIOS string ends in -E, and the BIOS returns whatever command 0xA1 + returns (but only if command 0xA1 is instant response), so said ALi keyboard + controller likely returns 'E'. */ + { + .name = "[ALi M1489] MSI MS-4145", + .internal_name = "ms4145", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_ALI_M1489, + .init = machine_at_ms4145_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ALI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[OPTi 802G] IBM Aptiva 510/710/Vision", + .internal_name = "aptiva510", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_OPTI_895_802G, + .init = machine_at_aptiva510_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3_PC330, + .block = CPU_BLOCK_NONE, + .min_bus = 25000000, + .max_bus = 33333333, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5430_onboard_vlb_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[OPTi 802G] IBM PC 330 (type 6573)", + .internal_name = "pc330_6573", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_OPTI_895_802G, + .init = machine_at_pc330_6573_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3_PC330, + .block = CPU_BLOCK_NONE, + .min_bus = 25000000, + .max_bus = 33333333, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5430_onboard_vlb_device, + .snd_device = NULL, + .net_device = NULL + }, + /* has a Phoenix PLCC Multikey copyrighted 1993, version unknown. */ + { + .name = "[OPTi 895] Packard Bell PB450", + .internal_name = "pb450", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_OPTI_895_802G, + .init = machine_at_pb450_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &pb450_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5428_vlb_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[i420EX] Advanced Integration Research 486PI", + .internal_name = "486pi", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420EX, + .init = machine_at_486pi_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Phoenix Multikey/42 PS/2 KBC, but unknown version */ + { + .name = "[i420EX] Anigma BAT4IP3e", + .internal_name = "bat4ip3e", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420EX, + .init = machine_at_bat4ip3e_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[i420EX] ASUS PVI-486AP4", + .internal_name = "486ap4", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420EX, + .init = machine_at_486ap4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware. */ + { + .name = "[i420EX] Intel Classic/PCI ED (Ninja)", + .internal_name = "ninja", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420EX, + .init = machine_at_ninja_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_PS2_KBC | MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED, + .default_jumpered_ecp_dma = 4, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* absolutely no KBC info */ + { + .name = "[i420EX] ICS SB486P", + .internal_name = "sb486p", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420EX, + .init = machine_at_sb486p_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_SUPER_IO | MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005200, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to another string seen on the UH19 website, this has AMI 'H' KBC. */ + { + .name = "[i420TX] AMI Super Voyager PCI", + .internal_name = "amis76", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420TX, + .init = machine_at_amis76_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* + This has an AMIKey (and an on-board NCR 53C810 PCI SCSI controller), thanks, eBay! + The keyboard port is AT. + */ + { + .name = "[i420TX] ASUS PCI/I-486SP3", + .internal_name = "486sp3", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420TX, + .init = machine_at_486sp3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE | MACHINE_SCSI | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware. */ + { + .name = "[i420TX] Intel Classic/PCI (Alfredo)", + .internal_name = "alfredo", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420TX, + .init = machine_at_alfredo_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. Also has a + SST 29EE010 Flash chip. */ + { + .name = "[i420ZX] ASUS PCI/I-486SP3G", + .internal_name = "486sp3g", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420ZX, + .init = machine_at_486sp3g_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_SCSI | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMI MEGAKey 'P' or 'R' keyboard controller. */ + { + .name = "[i420ZX] ICS SB486PV", + .internal_name = "sb486pv", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_INTEL_420ZX, + .init = machine_at_sb486pv_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + /* Has PCI but no user-facing slots. */ + .bus_flags = MACHINE_PCI, + .flags = MACHINE_PS2_KBC | MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM | MACHINE_PCI_INTERNAL, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &sb486pv_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5436_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This most likely has a standalone AMI Megakey 1993, which is type 'P', like the below Tekram board. */ + { + .name = "[IMS 8848] J-Bond PCI400C-B", + .internal_name = "pci400cb", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_IMS_8848, + .init = machine_at_pci400cb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCIV, + .flags = MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005000, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Acer KBC firmware. */ + { + .name = "[SiS 496] Acer P3", + .internal_name = "acerp3", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_acerp3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO, + .ram = { + .min = 2048, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ACER | 0x00004200, + .kbc_p1 = 0x004008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5434_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[SiS 496] ASUS PVI-486SP3C", + .internal_name = "486sp3c", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_486sp3c_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 261120, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[SiS 496] Lucky Star LS-486E", + .internal_name = "ls486e", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_ls486e_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_PS2_KBC | MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[SiS 496] Micronics M4Li", + .internal_name = "m4li", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_m4li_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* AMIKEY-2 */ + { + .name = "[SiS 496] MSI MS-4144", + .internal_name = "ms4144", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_ms4144_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 5120, /* Hack: machine seems to break with less than 5 MBs of RAM */ + .max = 131072, + .step = 1024 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Revision 1 has a Lance LT38C41L, revision 2 has a Holtek HT6542B. + Another variant with a Bestkey KBC might exist as well. */ + { + .name = "[SiS 496] Rise Computer R418", + .internal_name = "r418", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_r418_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_PS2_KBC | MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 261120, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a Holtek HT6542B KBC and the BIOS does not send a single non-standard KBC command. + The Holtek is an ASIC clone of AMI 'H' with a Holtek copyright string. */ + { + .name = "[SiS 496] Soyo 4SAW2", + .internal_name = "4saw2", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_4saw2_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK(CPU_i486SX, CPU_i486DX, CPU_Am486SX, CPU_Am486DX), + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 2048, + .max = 261120, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to MrKsoft, his real 4DPS has an AMIKey-2, which is an updated version + of type 'H'. There are other variants of the board with Holtek HT6542B KBCs. */ + { + .name = "[SiS 496] Zida Tomato 4DP", + .internal_name = "4dps", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_SIS_496, + .init = machine_at_4dps_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, + .ram = { + .min = 2048, + .max = 261120, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the UMC 88xx on-chip KBC. */ + { + .name = "[UMC 8881] A-Trend ATC-1415", + .internal_name = "atc1415", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_atc1415_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, /* UMC UM8886 on-chip KBC. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in + in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */ + { + .name = "[UMC 8881] Biostar MB-84xxUUD-A", + .internal_name = "84xxuuda", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_84xxuuda_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Compaq Presario 7100 / 7200 Series, using MiTAC/Trigon PL4600C (486). */ + /* Has a VIA VT82C42N KBC. */ + { + .name = "[UMC 8881] Compaq Presario 7100/7200 Series 486", + .internal_name = "pl4600c", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_pl4600c_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_APM, + .ram = { + .min = 1024, + .max = 65536, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5430_onboard_pci_device, + .snd_device = &ess_1688_device, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[UMC 8881] ECS Elite UM8810P-AIO", + .internal_name = "ecs486", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_ecs486_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_PS2_KBC | MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey Z(!) KBC firmware. */ + { + .name = "[UMC 8881] Epson ActionPC 2600", + .internal_name = "actionpc2600", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_actionpc2600_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 262144, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI_TRIGEM | 0x00005a00, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tgui9440_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in + in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */ + { + .name = "[UMC 8881] Epson ActionTower 8400", + .internal_name = "actiontower8400", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_actiontower8400_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_SUPER_IO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO, + .ram = { + .min = 1024, + .max = 262144, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI_TRIGEM | 0x00005a00, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5430_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in + in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */ + { + .name = "[UMC 8881] PC Chips M919", + .internal_name = "m919", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_m919_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PCIV, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, /* UMC UM8886 on-chip KBC. */ + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. Uses a mysterious I/O port C05. */ + { + .name = "[UMC 8881] Samsung SPC7700P-LW", + .internal_name = "spc7700plw", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_spc7700plw_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, /* UMC UM8886 on-chip KBC. */ + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a Holtek KBC. */ + { + .name = "[UMC 8881] Shuttle HOT-433A", + .internal_name = "hot433a", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_UMC_UM8881, + .init = machine_at_hot433a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 262144, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &hot433a_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C406 KBC+RTC that likely has identical commands to the VT82C42N. */ + { + .name = "[VIA VT82C496G] DFI G486VPA", + .internal_name = "g486vpa", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_VIA_VT82C496G, + .init = machine_at_g486vpa_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[VIA VT82C496G] FIC VIP-IO2", + .internal_name = "486vipio2", + .type = MACHINE_TYPE_486_S3_PCI, + .chipset = MACHINE_CHIPSET_VIA_VT82C496G, + .init = machine_at_486vipio2_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET3, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, + .ram = { + .min = 1024, + .max = 131072, + .step = 1024 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 486 machines - Miscellaneous */ + /* 486 machines which utilize the PCI bus */ + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[STPC Client] ITOX STAR", + .internal_name = "itoxstar", + .type = MACHINE_TYPE_486_MISC, + .chipset = MACHINE_CHIPSET_STPC_CLIENT, + .init = machine_at_itoxstar_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_STPC, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 75000000, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 1.0, + .max_multi = 1.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has internal video: ST STPC Atlas */ + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[STPC Consumer-II] Acrosser AR-B1423C", + .internal_name = "arb1423c", + .type = MACHINE_TYPE_486_MISC, + .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, + .init = machine_at_arb1423c_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_STPC, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: ST STPC Atlas */ + .ram = { + .min = 32768, + .max = 163840, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[STPC Consumer-II] Acrosser AR-B1479", + .internal_name = "arb1479", + .type = MACHINE_TYPE_486_MISC, + .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, + .init = machine_at_arb1479_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_STPC, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL | MACHINE_USB, /* Machine has internal video: ST STPC Atlas */ + .ram = { + .min = 32768, + .max = 163840, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[STPC Consumer-II] Lanner Electronics IAC-H488", + .internal_name = "iach488", + .type = MACHINE_TYPE_486_MISC, + .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, + .init = machine_at_iach488_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_STPC, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2, + .flags = MACHINE_IDE | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: ST STPC Atlas and NIC: Realtek RTL8139C+ */ + .ram = { + .min = 32768, + .max = 131072, + .step = 32768 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[STPC Elite] Advantech PCM-9340", + .internal_name = "pcm9340", + .type = MACHINE_TYPE_486_MISC, + .chipset = MACHINE_CHIPSET_STPC_ELITE, + .init = machine_at_pcm9340_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_STPC, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: SMI LynxEM+ 712 */ + .ram = { + .min = 32768, + .max = 98304, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[STPC Atlas] AAEON PCM-5330", + .internal_name = "pcm5330", + .type = MACHINE_TYPE_486_MISC, + .chipset = MACHINE_CHIPSET_STPC_ATLAS, + .init = machine_at_pcm5330_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_STPC, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 2.0, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_PCI_INTERNAL, /* Machine has internal video: ST STPC Atlas */ + .ram = { + .min = 32768, + .max = 131072, + .step = 32768 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Socket 4 machines */ + /* 430LX */ + /* Hacer Acer 90M002A V4.10H KBC. */ + { + .name = "[i430LX] Acer V12P", + .internal_name = "v12p", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_v12p_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 196608, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ACER | 0x00000000, + .kbc_p1 = 0x004008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &v12p_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware. + This is basically an Intel Batman (*NOT* Batman's Revenge) with a fancier + POST screen */ + { + .name = "[i430LX] AMBRA DP60 PCI", + .internal_name = "ambradp60", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_ambradp60_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware (AMIKey-2), per POST screen with BIOS string + shown in the manual. Has PS/2 mouse support with serial-style (DB9) + connector. + The boot block for BIOS recovery requires an unknown bit on port 805h + to be clear. */ + { + .name = "[i430LX] AMI Excalibur PCI Pentium", + .internal_name = "excaliburpci", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_excaliburpci_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_APM, /* Machine has internal SCSI */ + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey F KBC firmware (AMIKey). */ + { + .name = "[i430LX] ASUS P/I-P5MP3", + .internal_name = "p5mp3", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_p5mp3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_PS2_KBC | MACHINE_APM, + .ram = { + .min = 2048, + .max = 196608, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[i430LX] Dell Dimension XPS P60", + .internal_name = "dellxp60", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_dellxp60_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00001010, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[i430LX] Dell OptiPlex 560/L", + .internal_name = "opti560l", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_opti560l_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI MegaKey 'H' KBC firmware. */ + { + .name = "[i430LX] Gigabyte GA-586IS", + .internal_name = "586is", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_586is_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has IBM PS/2 Type 1 KBC firmware. */ + { + .name = "[i430LX] IBM PS/ValuePoint P60", + .internal_name = "valuepointp60", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_valuepointp60_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_VIDEO_8514A | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &mach32_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware. */ + { + .name = "[i430LX] Intel Premiere/PCI (Batman's Revenge)", + .internal_name = "revenge", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_revenge_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The M5Pi appears to have a Phoenix MultiKey KBC firmware according to photos. */ + { + .name = "[i430LX] Micronics M5Pi", + .internal_name = "m5pi", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_m5pi_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware. */ + { + .name = "[i430LX] Packard Bell PB520R", + .internal_name = "pb520r", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_INTEL_430LX, + .init = machine_at_pb520r_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 8192, + .max = 139264, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5434_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + + /* OPTi 596/597 */ + /* This uses an AMI KBC firmware in PS/2 mode (it sends command A5 with the + PS/2 "Load Security" meaning), most likely MegaKey as it sends command AF + (Set Extended Controller RAM) just like the later Intel AMI BIOS'es. */ + { + .name = "[OPTi 597] AMI Excalibur VLB", + .internal_name = "excalibur", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_excalibur_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 60000000, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_VLB, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005000, /* Guess. */ + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* OPTi 596/597/822 */ + /* Has a VIA VT82C42N KBC with AMI 'F' firmware */ + { + .name = "[OPTi 597] AT&T Globalyst 330 (Pentium)", + .internal_name = "globalyst330_p5", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_globalyst330_p5_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PCIV, + .flags = MACHINE_APM, + .ram = { + .min = 8192, + .max = 65536, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has AMIKey 'F' KBC firmware. */ + { + .name = "[OPTi 597] Supermicro P5VL-PCI", + .internal_name = "p5vl", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_p5vl_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PCIV, + .flags = MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 50x */ + /* This has some form of AMI MegaKey as it uses keyboard controller command 0xCC. */ + { + .name = "[SiS 501] AMI Excalibur PCI-II Pentium ISA", + .internal_name = "excaliburpci2", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_SIS_501, + .init = machine_at_excaliburpci2_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_0 | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005200, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[SiS 501] ASUS PCI/I-P5SP4", + .internal_name = "p5sp4", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_SIS_501, + .init = machine_at_p5sp4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[SiS 501] ECS SI5PI AIO", + .internal_name = "ecs50x", + .type = MACHINE_TYPE_SOCKET4, + .chipset = MACHINE_CHIPSET_SIS_501, + .init = machine_at_ecs50x_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 5000, + .max_voltage = 5000, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Socket 4/5 machines */ + /* OPTi 596/597 */ + /* This has AMIKey-2 'H' KBC firmware. */ + { + .name = "[OPTi 597] Taken PCI560-01", + .internal_name = "pci56001", + .type = MACHINE_TYPE_SOCKET4_5, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_pci56001_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET4 | CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 5000, + .min_multi = 1.0, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Socket 5 machines */ + /* 430NX */ + /* This has the Phoenix MultiKey KBC firmware. + This is basically an Intel Premiere/PCI II with a fancier POST screen. */ + { + .name = "[i430NX] AMBRA DP90 PCI", + .internal_name = "ambradp90", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_ambradp90_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI 'H' KBC firmware. */ + { + .name = "[i430NX] ASUS PCI/I-P54NP4", + .internal_name = "p54np4", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_p54np4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE /*| MACHINE_SCSI */ | MACHINE_APM, + .ram = { + .min = 2048, + .max = 524288, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Same as Intel Premiere PCI/II, but with a Dell OEM BIOS */ + { + .name = "[i430NX] Dell Dimension XPS Pxxx", + .internal_name = "dellplato", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_dellplato_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00001010, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI 'H' KBC firmware. */ + { + .name = "[i430NX] Gigabyte GA-586IP", + .internal_name = "586ip", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_586ip_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_APM, + .ram = { + .min = 2048, + .max = 262144, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware. */ + { + .name = "[i430NX] Intel Premiere/PCI II (Plato)", + .internal_name = "plato", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_plato_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00012900, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has unknown KBC firmware. */ + { + .name = "[i430NX] Siemens-Nixdorf D842", + .internal_name = "d842", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_d842_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has onboard video: TLI ET4000/w32p */ + .ram = { + .min = 2048, + .max = 131072, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &d842_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMI MegaKey KBC firmware. */ + { + .name = "[i430NX] Teknor TEK-932", + .internal_name = "tek932", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430NX, + .init = machine_at_tek932_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE | MACHINE_APM, + .ram = { + .min = 2048, + .max = 262144, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005200, /* Guess. */ + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 430FX */ + /* Uses an ACER/NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware (V5.0). */ + { + .name = "[i430FX] Acer V30", + .internal_name = "acerv30", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_acerv30_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_ACER | 0x00000000, + .kbc_p1 = 0x004008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey F KBC firmware. */ + { + .name = "[i430FX] AMI Apollo", + .internal_name = "apollo", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_apollo_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has Dell KBC firmware. */ + { + .name = "[i430FX] Dell OptiPlex GXL/GXM", + .internal_name = "optiplexgxl", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_optiplexgxl_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_Cx6x86), + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_APM, /* Video: S3 Trio64V+ (86C765), Sound: Creative ViBRA 16S (CT2504), Network: 3Com ETHERLINK III (3C509B) */ + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, + .snd_device = &sb_vibra16s_onboard_device, + .net_device = NULL /* not yet emulated */ + }, + /* KBC On-Chip the VT82C406MV. */ + { + .name = "[i430FX] FIC PT-2000", + .internal_name = "pt2000", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_pt2000_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430FX] Intel Advanced/ZP (Zappa)", + .internal_name = "zappa", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_zappa_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The BIOS sends KBC command B3 which indicates an AMI (or VIA VT82C42N) KBC. */ + { + .name = "[i430FX] NEC PowerMate V", + .internal_name = "powermatev", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_powermatev_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey Z(!) KBC firmware. */ + { + .name = "[i430FX] TriGem Hawk", + .internal_name = "hawk", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_hawk_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI_TRIGEM | KBC_FLAG_IS_GREEN | 0x00005a00, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* OPTi 596/597 */ + /* Has unknown KBC firmware. */ + { + .name = "[OPTi 597] Northgate Computer Systems Elegance Pentium 90", + .internal_name = "ncselp90", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_ncselp90_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCIV, + .flags = MACHINE_APM | MACHINE_IDE_DUAL | MACHINE_SUPER_IO, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004d00, /* Guess */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has unknown KBC firmware. */ + { + .name = "[OPTi 597] Shuttle HOT-543", + .internal_name = "hot543", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_hot543_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PCIV, + .flags = MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This uses an AMI KBC firmware in PS/2 mode (it sends command A5 with the + PS/2 "Load Security" meaning), most likely MegaKey as it sends command AF + (Set Extended Controller RAM) just like the later Intel AMI BIOS'es. */ + { + .name = "[OPTi 597] TMC PAT54PV", + .internal_name = "pat54pv", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_OPTI_547_597, + .init = machine_at_pat54pv_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_VLB, + .flags = MACHINE_PS2_KBC | MACHINE_APM, + .ram = { + .min = 2048, + .max = 65536, + .step = 2048 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005000, /* Guess. */ + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 85C50x */ + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[SiS 501] ASUS PCI/I-P54SP4", + .internal_name = "p54sp4", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_SIS_501, + .init = machine_at_p54sp4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86), + .min_bus = 40000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[SiS 501] BCM SQ-588", + .internal_name = "sq588", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_SIS_501, + .init = machine_at_sq588_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_PENTIUMMMX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This machine has a Winbond W83C842 KBC */ + { + .name = "[SiS 501] Gemlight GMB-P54SPS", + .internal_name = "p54sps", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_SIS_501, + .init = machine_at_p54sps_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + CPU_BLOCK(CPU_PENTIUMMMX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess. */ + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[SiS 5501] MSI MS-5109", + .internal_name = "ms5109", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_SIS_5501, + .init = machine_at_ms5109_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + CPU_BLOCK(CPU_PENTIUMMMX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_0 | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey Z(!) KBC firmware. */ + { + .name = "[SiS 5501] Olivetti (TriGem) Torino", + .internal_name = "torino", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_SIS_5501, + .init = machine_at_torino_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + CPU_BLOCK(CPU_PENTIUMMMX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3520, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 1.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI_TRIGEM | KBC_FLAG_IS_GREEN | 0x00005a00, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &tgui9660_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + + /* UMC 889x */ + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[UMC 889x] Shuttle HOT-539", + .internal_name = "hot539", + .type = MACHINE_TYPE_SOCKET5, + .chipset = MACHINE_CHIPSET_UMC_UM8890BF, + .init = machine_at_hot539_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86), + .min_bus = 40000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3600, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Socket 7 (Single Voltage) machines */ + /* 430FX */ + /* This has an AMIKey-2, which is type 'H'. + This also seems to be revision 2.1 with the FDC37C665 SIO. */ + { + .name = "[i430FX] ASUS P/I-P55TP4XE", + .internal_name = "p54tp4xe", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_p54tp4xe_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3600, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is an updated version of type 'H'. */ + { + .name = "[i430FX] ASUS P/I-P55TP4XE (MR BIOS)", + .internal_name = "p54tp4xe_mr", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_p54tp4xe_mr_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3600, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware. The KBC itself seems to differ between an AMIKEY-2 and a Winbond W83C42. */ + { + .name = "[i430FX] DataExpert EXP8551", + .internal_name = "exp8551", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_exp8551_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430FX] Gateway 2000 Thor", + .internal_name = "gw2katx", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_gw2katx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, /* Machine has optional onboard sound: Crystal CS4232-KQ */ + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C932 Super I/O chip with on-chip KBC with AMI + MegaKey (revision '5') KBC firmware. */ + { + .name = "[i430FX] HP Vectra VL 5 Series 4", + .internal_name = "vectra54", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_vectra54_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_phoenix_trio64_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430FX] Intel Advanced/ATX (Thor)", + .internal_name = "thor", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_thor_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_GAMEPORT, /* Machine has optional onboard sound: Crystal CS4232-KQ */ + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430FX] Intel Advanced/ATX (Thor) (MR BIOS)", + .internal_name = "mrthor", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_mrthor_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, /* Machine has optional onboard video: S3 Trio64V+ and optional onboard sound: Crystal CS4232-KQ */ + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430FX] Intel Advanced/EV (Endeavor)", + .internal_name = "endeavor", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_endeavor_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = machine_at_endeavor_gpio_handler, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_phoenix_trio64_onboard_pci_device, + .snd_device = &sb_vibra16s_onboard_device, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[i430FX] MSI MS-5119", + .internal_name = "ms5119", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_ms5119_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This most likely uses AMI MegaKey KBC firmware as well due to having the same + Super I/O chip (that has the KBC firmware on it) as eg. the Advanced/EV. */ + { + .name = "[i430FX] Packard Bell PB640", + .internal_name = "pb640", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_pb640_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5440_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[i430FX] PC Partner MB500N", + .internal_name = "mb500n", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_mb500n_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_0 | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an AMIKEY-2 'H' KBC firmware (1992). */ + { + .name = "[i430FX] QDI FMB", + .internal_name = "fmb", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430FX, + .init = machine_at_fmb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 430HX */ + /* Has SST Flash. */ + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i430HX] Acer V35N", + .internal_name = "acerv35n", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_acerv35n_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3450, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey-2 or VIA VT82C42N KBC (depending on the revision) with AMIKEY 'F' KBC firmware. */ + { + .name = "[i430HX] AOpen AP53", + .internal_name = "ap53", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_ap53_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3450, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 2.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* [TEST] Has a VIA 82C42N KBC that emulates the AMIKey F KBC firmware. */ + { + .name = "[i430HX] Biostar MB-8500TUC", + .internal_name = "8500tuc", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_8500tuc_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* It possible has AMIKEY-2 'H' KBC firmware. */ + { + .name = "[i430HX] Siemens-Nixdorf D943", + .internal_name = "d943", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_d943_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_GAMEPORT | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &d943_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5436_onboard_pci_device, + .snd_device = &sb_vibra16c_onboard_device, + .net_device = NULL + }, + + /* 430VX */ + /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI + MegaKey (revision '5') KBC firmware. */ + { + .name = "[i430VX] Gateway 2000 Mailman", + .internal_name = "gw2kma", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_gw2kma_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */ + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &sb_vibra16c_onboard_device, + .net_device = NULL + }, + + /* SiS 5501 */ + /* Has the Lance LT38C41 KBC. */ + { + .name = "[SiS 5501] Chaintech 5SBM/5SBM2 (M103)", + .internal_name = "5sbm2", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_SIS_5501, + .init = machine_at_5sbm2_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x000004f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &c5sbm2_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 5511 */ + /* Has Megakey 'R' KBC */ + { + .name = "[SiS 5511] AMI Atlas PCI-II", + .internal_name = "amis727", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_SIS_5511, + .init = machine_at_amis727_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005200, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware (AMIKey-2). */ + { + .name = "[SiS 5511] AOpen AP5S", + .internal_name = "ap5s", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_SIS_5511, + .init = machine_at_ap5s_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ap5s_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an SMC FDC37C669QF Super I/O. */ + { + .name = "[SiS 5511] IBM PC 140 (type 6260)", + .internal_name = "pc140_6260", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_SIS_5511, + .init = machine_at_pc140_6260_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX, CPU_PENTIUMMMX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5436_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware (AMIKey-2). */ + { + .name = "[SiS 5511] MSI MS-5124", + .internal_name = "ms5124", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_SIS_5511, + .init = machine_at_ms5124_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 3380, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_MBDMA, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Socket 7 (Dual Voltage) machines */ + /* 430HX */ + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i430HX] Acer AcerPower Ultima", + .internal_name = "acerm3a", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_acerm3a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_Cx6x86MX), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal SCSI */ + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware (AMIKey-2). */ + { + .name = "[i430HX] ASUS P/I-P55T2P4", + .internal_name = "p55t2p4", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_p55t2p4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 4.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The base board has a Holtek HT6542B which emulates the AMIKey-2 ('H') KBC firmware. */ + { + .name = "[i430HX] ASUS P/I-P65UP5 (C-P55T2D)", + .internal_name = "p65up5_cp55t2d", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_p65up5_cp55t2d_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* OEM-only Intel CU430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */ + { + .name = "[i430HX] Intel CU430HX (Cumberland)", + .internal_name = "cu430hx", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_cu430hx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_USB, /* Machine has internal video: ATI Mach64GT 3D Rage and internal NIC: Intel 82557 */ + .ram = { + .min = 8192, + .max = 524288, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &sb_vibra16c_onboard_device, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430HX] Intel TC430HX (Tucson)", + .internal_name = "tc430hx", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_tc430hx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal sound: Yamaha YMF701-S */ + .ram = { + .min = 8192, + .max = 524288, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_virge_375_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i430HX] Micronics M7S-Hi", + .internal_name = "m7shi", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_m7shi_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Unknown PS/2 KBC. */ + { + .name = "[i430HX] Radisys EPC-2102", + .internal_name = "epc2102", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_epc2102_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_USE_CONFIG, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00005200, /* Guess. */ + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . + Yes, this is an Intel AMI BIOS with a fancy splash screen. */ + { + .name = "[i430HX] Sony Vaio PCV-90", + .internal_name = "pcv90", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_pcv90_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */ + .ram = { + .min = 8192, + .max = 524288, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* [TEST] The board doesn't seem to have a KBC at all, which probably means it's an on-chip one on the PC87306 SIO. + A list on a Danish site shows the BIOS as having a -0 string, indicating non-AMI KBC firmware. */ + { + .name = "[i430HX] Supermicro P55T2S", + .internal_name = "p55t2s", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_p55t2s_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 524288, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* OEM-only Intel CU430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */ + { + .name = "[i430HX] Toshiba Equium 5200D", + .internal_name = "equium5200", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_equium5200_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_USB, /* Machine has internal video: ATI Mach64GT 3D Rage and internal NIC: Intel 82557 */ + .ram = { + .min = 8192, + .max = 524288, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &sb_vibra16c_onboard_device, + .net_device = NULL + }, + /* OEM version of Intel TC430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */ + { + .name = "[i430HX] Toshiba Infinia 7201", + .internal_name = "infinia7200", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_infinia7200_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal sound: Yamaha YMF701-S */ + .ram = { + .min = 8192, + .max = 524288, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_virge_375_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + + /* 430VX */ + /* This has the VIA VT82C42N or Holtek HT6542B KBC. */ + { + .name = "[i430VX] AOpen AP5VM", + .internal_name = "ap5vm", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_ap5vm_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2600, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SCSI | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware (AMIKey-2) on a BestKey KBC. */ + { + .name = "[i430VX] ASUS P/I-P55TVP4", + .internal_name = "p55tvp4", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_p55tvp4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The BIOS does not send a single non-standard KBC command, so it must have a standard IBM + PS/2 KBC firmware or a clone thereof. */ + { + .name = "[i430VX] Azza PT-5IV", + .internal_name = "5ivg", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_5ivg_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, /* Guess. */ + .kbc_params = KBC_VEN_AMI | 0x00004800, /* Guess. */ + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* [TEST] Has a VIA VT82C42N KBC. */ + { + .name = "[i430VX] Biostar MB-8500TVX-A", + .internal_name = "8500tvxa", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_8500tvxa_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2600, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C932QF Super I/O chip with on-chip KBC with AMI + MegaKey (revision '5') KBC firmware. */ + { + .name = "[i430VX] Compaq Presario 224x", + .internal_name = "presario2240", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_presario2240_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI, + .ram = { + .min = 16384, + .max = 49152, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_trio64v2_dx_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C931APM Super I/O chip with on-chip KBC with Compaq + KBC firmware. */ + { + .name = "[i430VX] Compaq Presario 45xx", + .internal_name = "presario4500", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_presario4500_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI, + .ram = { + .min = 16384, + .max = 49152, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_trio64v2_dx_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI + MegaKey (revision '5') KBC firmware. */ + { + .name = "[i430VX] Dell Dimension XPS Pxxxa/Mxxxa", + .internal_name = "dellhannibalp", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_dellhannibalp_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, /* Machine has internal video: S3 Trio64V+ */ + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has AMIKey H KBC firmware (AMIKey-2). */ + { + .name = "[i430VX] ECS P5VX-B", + .internal_name = "p5vxb", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_p5vxb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI + MegaKey (revision '5') KBC firmware. */ + { + .name = "[i430VX] Epox P55-VA", + .internal_name = "p55va", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_p55va_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI + MegaKey (revision '5') KBC firmware. */ + { + .name = "[i430VX] Gateway 2000 Hitman", + .internal_name = "gw2kte", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_gw2kte_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2200, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &sb_vibra16c_onboard_device, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i430VX] HP Brio 80xx", + .internal_name = "brio80xx", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_brio80xx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 2200, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has internal video: S3 Trio64V2/DX */ + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the AMIKey-2 ('H') KBC firmware. */ + { + .name = "[i430VX] LG IBM Multinet x52 (MSI MS-5136)", + .internal_name = "lgibmx52", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_lgibmx52_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 4.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &lgibmx52_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i430VX] Packard Bell Multimedia C110 (PB680/PB682/PB685)", + .internal_name = "pb680", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_pb680_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 131072, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i430VX] Packard Bell Multimedia M415 (PB810)", + .internal_name = "pb810", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_pb810_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 4.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM, /* Machine has internal video: S3 Trio64V2/DX */ + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the AMIKey 'H' firmware, possibly AMIKey-2. Photos show it with a BestKey, so it + likely clones the behavior of AMIKey 'H'. */ + { + .name = "[i430VX] PC Partner MB520N", + .internal_name = "mb520n", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_mb520n_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2600, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a Holtek KBC and the BIOS does not send a single non-standard KBC command, so it + must be an ASIC that clones the standard IBM PS/2 KBC. */ + { + .name = "[i430VX] Shuttle HOT-557", + .internal_name = "430vx", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430VX, + .init = machine_at_i430vx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_GAMEPORT | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 4096, + .max = 131072, + .step = 4096 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 430TX */ + /* The BIOS sends KBC command B8, CA, and CB, so it has an AMI KBC firmware. */ + { + .name = "[i430TX] ADLink NuPRO-591/592", + .internal_name = "nupro592", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_nupro592_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 1900, + .max_voltage = 2800, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &chips_69000_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the AMIKey KBC firmware, which is type 'F' (YM430TX is based on the TX97). */ + { + .name = "[i430TX] ASUS TX97", + .internal_name = "tx97", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_tx97_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* + According to Dell specifications, it can have either National Semiconductor + PC87307 or PC87309 Super I/O. All known instances have the former, although + other similar Dells of the era have pinouts for accompanying either so this + likely also does. + + The KBC is either an AMI '5' MegaKey, Phoenix MultiKey/42 1.37, or Phoenix + MultiKey/42i 4.16. + */ + { + .name = "[i430TX] Dell OptiPlex GN+", + .internal_name = "optiplexgn", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_optiplexgn_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI, + /* Video: S3 86C785 (Trio64V2/GX), ethernet: 3C905. */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO | MACHINE_SOUND, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + /* Stop-gap measure until the Trio64V2/GX is emulated, as both use the same VBIOS. */ + .vid_device = &s3_trio64v2_dx_onboard_pci_device, + .snd_device = &sb_vibra16xv_onboard_device, + .net_device = NULL + }, + /* [TEST] Has AMI Megakey '5' KBC firmware on the SM(S)C FDC37C67x Super I/O chip. */ + { + .name = "[i430TX] Gateway E-1000", + .internal_name = "tomahawk", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_tomahawk_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_NIC | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_trio64v2_dx_onboard_pci_device, + .snd_device = &cs4236b_device, + .net_device = &pcnet_am79c973_onboard_device + }, + /* This has the Winbond W83977 Super I/O Chip with AMIKey-2 KBC firmware, which is type 'H'. */ + { + .name = "[i430TX] Intel YM430TX (Yamamoto)", + .internal_name = "ym430tx", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_ym430tx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 4096, + .max = 262144, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* + PhoenixBIOS 4.0 Rel 6.0 for 430TX, has onboard Yamaha YMF701 which + is not emulated yet. + + Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. + */ + { + .name = "[i430TX] Micronics Thunderbolt", + .internal_name = "thunderbolt", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_thunderbolt_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2), + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + /* Machine has internal sound: Yamaha YMF701-S */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C67x Super I/O chip with on-chip KBC with Phoenix or + AMI MEGAKEY '5' KBC firmware. */ + { + .name = "[i430TX] NEC Mate NX MA23C", + .internal_name = "ma23c", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_ma23c_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2700, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCIONLY | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal video: Cirrus Logic CL-GD5465 and internal sound: Yamaha YMF715 */ + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has the Phoenix MultiKey KBC firmware on the NSC Suepr I/O chip. */ + { + .name = "[i430TX] Packard Bell PB790", + .internal_name = "an430tx", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_an430tx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, + CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */ + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The BIOS sends KBC command BB and expects it to output a byte, which is AMI KBC behavior. + A picture shows a VIA VT82C42N KBC though, so it could be a case of that KBC with AMI firmware. */ + { + .name = "[i430TX] PC Partner MB540N", + .internal_name = "mb540n", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_mb540n_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2700, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 4096, + .max = 262144, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Award BIOS, PS2, EDO, SDRAM, 4 PCI, 4 ISA, VIA VT82C42N KBC */ + { + .name = "[i430TX] Soltek SL-56A5", + .internal_name = "56a5", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_56a5_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 4096, + .max = 262144, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* [TEST] Has AMIKey 'H' KBC firmware on the Winbond W83967 Super I/O chip. */ + { + .name = "[i430TX] Supermicro P5MMS98", + .internal_name = "p5mms98", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_p5mms98_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 4096, + .max = 262144, + .step = 4096 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* [TEST] Has AMIKey 'H' KBC firmware. */ + { + .name = "[i430TX] TriGem RD535 (Richmond)", + .internal_name = "richmond", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_INTEL_430TX, + .init = machine_at_richmond_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Apollo VPX */ + /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA VPX] FIC VA-502", + .internal_name = "ficva502", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_VPX, + .init = machine_at_ficva502_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Apollo VP3 */ + /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA VP3] FIC PA-2012", + .internal_name = "ficpa2012", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_VP3, + .init = machine_at_ficpa2012_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 55000000, + .max_bus = 75000000, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA VP3] PC Partner VIA809DS", + .internal_name = "via809ds", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_VP3, + .init = machine_at_via809ds_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 5571 */ + /* Has the SiS 5571 chipset with on-chip KBC. */ + { + .name = "[SiS 5571] Daewoo CD520", + .internal_name = "cb52xsi", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_SIS_5571, + .init = machine_at_cb52xsi_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the SiS 5571 chipset with on-chip KBC. */ + { + .name = "[SiS 5571] MSI MS-5146", + .internal_name = "ms5146", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_SIS_5571, + .init = machine_at_ms5146_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the SiS 5571 chipset with on-chip KBC. */ + { + .name = "[SiS 5571] Rise R534F", + .internal_name = "r534f", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_SIS_5571, + .init = machine_at_r534f_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 55000000, + .max_bus = 83333333, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 393216, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 5581 */ + /* Has the SiS 5581 chipset with on-chip KBC. */ + { + .name = "[SiS 5581] ASUS SP97-XV", + .internal_name = "sp97xv", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_SIS_5581, + .init = machine_at_sp97xv_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the SiS 5581 chipset with on-chip KBC. */ + { + .name = "[SiS 5581] BCM SQ-578", + .internal_name = "sq578", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_SIS_5581, + .init = machine_at_sq578_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 5591 */ + /* Has the SiS 5591 chipset with on-chip KBC. */ + { + .name = "[SiS 5591] MSI MS-5172", + .internal_name = "ms5172", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_SIS_5591, + .init = machine_at_ms5172_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 75000000, + .min_voltage = 2500, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* ALi ALADDiN IV+ */ + /* Has the ALi M1543 southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN IV+] Biostar M5ATA", + .internal_name = "m5ata", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, + .init = machine_at_m5ata_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 4.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the ALi M1543 southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN IV+] MSI MS-5164", + .internal_name = "ms5164", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, + .init = machine_at_ms5164_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 83333333, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the ALi M1543 southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN IV+] PC Chips M560", + .internal_name = "m560", + .type = MACHINE_TYPE_SOCKET7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, + .init = machine_at_m560_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 83333333, + .min_voltage = 2100, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Super Socket 7 machines */ + /* ALi ALADDiN V */ + /* Has the ALi M1543C southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN V] ASUS P5A", + .internal_name = "p5a", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, + .init = machine_at_p5a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 120000000, + .min_voltage = 2000, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: ESS Solo-1 */ + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Is the exact same as the Matsonic MS6260S. Has the ALi M1543C southbridge + with on-chip KBC. */ + { + .name = "[ALi ALADDiN V] PC Chips M579", + .internal_name = "m579", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, + .init = machine_at_m579_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 2000, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal sound: C-Media CMI8330 */ + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* M1534c kbc */ + { + .name = "[ALi ALADDiN V] Gateway Lucas", + .internal_name = "gwlucas", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, + .init = machine_at_gwlucas_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 2000, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCIONLY | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal video: ATI 3D Rage Pro Turbo AGP and sound: Ensoniq ES1373 */ + .ram = { + .min = 8192, + .max = 262144, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &es1373_onboard_device, + .net_device = NULL + }, + /* Has the ALi M1543C southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN V] Gigabyte GA-5AA", + .internal_name = "5aa", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, + .init = machine_at_5aa_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 140000000, + .min_voltage = 1300, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the ALi M1543C southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN V] Gigabyte GA-5AX", + .internal_name = "5ax", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, + .init = machine_at_5ax_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 140000000, + .min_voltage = 1300, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Apollo MVP3 */ + /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA MVP3] AOpen AX59 Pro", + .internal_name = "ax59pro", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, + .init = machine_at_ax59pro_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 124242424, + .min_voltage = 1300, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the VIA VT82C596A southbridge with on-chip KBC identical to the VIA + VT82C42N. Sadly likely abuses cache on Cyrix 6x86MX and MII CPUs (Cyrix MII being what most socket 7 eMachines PCs used) , so they are blocked and it's thus named after the only known eMachines with an AMD K6-2 CPU here */ + { + .name = "[VIA MVP3] eMachines eTower 300k", + .internal_name = "delhi3", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, + .init = machine_at_delhi3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK(CPU_Cx6x86MX), + .min_bus = 66666667, + .max_bus = 124242424, + .min_voltage = 2000, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Has internal video: ATI 3D Rage IIc AGP (Rage 2) */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_SOUND | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cs4235_onboard_device, + .net_device = NULL + }, + /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA MVP3] FIC VA-503+", + .internal_name = "ficva503p", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, + .init = machine_at_mvp3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 124242424, + .min_voltage = 2000, + .max_voltage = 3200, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the VIA VT82C686A southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA MVP3] FIC VA-503A", + .internal_name = "ficva503a", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, + .init = machine_at_ficva503a_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 124242424, + .min_voltage = 1800, + .max_voltage = 3100, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_A97 | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the VIA VT82C686A southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA MVP3] Soyo 5EMA PRO", + .internal_name = "5emapro", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, + .init = machine_at_5emapro_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 124242424, + .min_voltage = 2000, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SiS 5591 */ + /* Has the SiS 5591 chipset with on-chip KBC. */ + { + .name = "[SiS 5591] Gigabyte GA-5SG100", + .internal_name = "5sg100", + .type = MACHINE_TYPE_SOCKETS7, + .chipset = MACHINE_CHIPSET_SIS_5591, + .init = machine_at_5sg100_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 100000000, + .min_voltage = 2000, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Socket 8 machines */ + /* 450KX */ + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[i450KX] AOpen AP61", + .internal_name = "ap61", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_450KX, + .init = machine_at_ap61_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, + .default_jumpered_ecp_dma = 3, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x000008f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has an AMIKey-2, which is type 'H'. */ + { + .name = "[i450KX] ASUS P/I-P6RP4", + .internal_name = "p6rp4", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_450KX, + .init = machine_at_p6rp4_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI, /* Machine has AMB */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = MACHINE_DMA_1, + .default_jumpered_ecp_dma = 1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a PC87306 with unknown keyboard controller firmware (Phoenix?). */ + { + .name = "[i450KX] FIC PO-6000", + .internal_name = "ficpo6000", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_450KX, + .init = machine_at_ficpo6000_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI, /* Machine has AMB */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = MACHINE_DMA_1, + .default_jumpered_ecp_dma = 1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &ficpo6000_device, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440FX */ + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i440FX] Acer V60N", + .internal_name = "acerv60n", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_acerv60n_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 393216, + .step = 8192 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The base board has a Holtek HT6542B with AMIKey-2 ('H') KBC firmware. */ + { + .name = "[i440FX] ASUS P/I-P65UP5 (C-P6ND)", + .internal_name = "p65up5_cp6nd", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_p65up5_cp6nd_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[i440FX] Biostar MB-8600TTC", + .internal_name = "8600ttc", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_8600ttc_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2900, + .max_voltage = 3300, + .min_multi = 2.0, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* It's an Intel VS440FX with a Dell OEM BIOS */ + { + .name = "[i440FX] Dell Dimension XPS Pro___n", + .internal_name = "dellvenus", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_dellvenus_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cs4236_onboard_device, + .net_device = NULL + }, + /* It's an Intel VS440FX with a Gateway 2000 OEM BIOS */ + { + .name = "[i440FX] Gateway 2000 Venus", + .internal_name = "gw2kvenus", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_gw2kvenus_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cs4236_onboard_device, + .net_device = NULL + }, + /* Has the AMIKey-2 ('H') KBC firmware. */ + { + .name = "[i440FX] Gigabyte GA-686NX", + .internal_name = "686nx", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_686nx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i440FX] Intel AP440FX (Apollo)", + .internal_name = "ap440fx", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_ap440fx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_SOUND | MACHINE_VIDEO | MACHINE_USB, /* Machine has internal video: S3 ViRGE/DX and sound: Crystal CS4236B */ + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &s3_virge_325_onboard_pci_device, + .snd_device = &cs4236b_onboard_device, + .net_device = NULL + }, + /* According to tests from real hardware: This has AMI MegaKey KBC firmware on the + PC87306 Super I/O chip, command 0xA1 returns '5'. + Command 0xA0 copyright string: (C)1994 AMI . */ + { + .name = "[i440FX] Intel VS440FX (Venus)", + .internal_name = "vs440fx", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_vs440fx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 3.5 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cs4236_onboard_device, + .net_device = NULL + }, + /* Has the AMIKey-2 ('H') KBC firmware. */ + { + .name = "[i440FX] LG IBM Multinet x61 (MSI MS-6106)", + .internal_name = "lgibmx61", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_lgibmx61_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2500, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, /* Machine has internal SCSI: Adaptec AIC-7880U */ + .ram = { + .min = 40960, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i440FX] Micronics M6Mi", + .internal_name = "m6mi", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_m6mi_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2900, + .max_voltage = 3300, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Creative Vibra 16C */ + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a VIA VT82C42N KBC. */ + { + .name = "[i440FX] PC Partner MB600N", + .internal_name = "mb600n", + .type = MACHINE_TYPE_SOCKET8, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_mb600n_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET8, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 66666667, + .min_voltage = 2100, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_VIA | 0x00424600, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Slot 1 machines */ + /* ALi ALADDiN-PRO II */ + /* Has the ALi M1543C southbridge with on-chip KBC. */ + { + .name = "[ALi ALADDiN-PRO II] PC Chips M729", + .internal_name = "m729", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_ALI_ALADDIN_PRO_II, + .init = machine_at_m729_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: C-Media CMI8330 */ + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440FX */ + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i440FX] Acer V62X", + .internal_name = "acerv62x", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_acerv62x_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 83333333, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 393216, + .step = 8192 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* The base board has a Holtek HT6542B KBC which emulates the AMIKEY-2 'H' KBC firmware. */ + { + .name = "[i440FX] ASUS P/I-P65UP5 (C-PKND)", + .internal_name = "p65up5_cpknd", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_p65up5_cpknd_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* This has a Holtek KBC. */ + { + .name = "[i440FX] ASUS KN97", + .internal_name = "kn97", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440FX, + .init = machine_at_kn97_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 83333333, + .min_voltage = 2800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 127, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_HOLTEK | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440LX */ + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440LX] ABIT LX6", + .internal_name = "lx6", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440LX, + .init = machine_at_lx6_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 60000000, + .max_bus = 83333333, + .min_voltage = 1500, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a National Semiconductor PC87307 Super I/O with on-chip KBC, which has one of these + firmwares: AMI '5' MegaKey, Phoenix MultiKey/42 1.37, or Phoenix MultiKey/42i 4.16. */ + { + .name = "[i440LX] Dell OptiPlex GXa", + .internal_name = "optiplexgxa", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440LX, + .init = machine_at_optiplexgxa_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_CYRIX3S), + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 5.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Video: ATi 3D Rage Pro, Network: 3Com 3C905, Sound: Crystal CS4236B */ + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, /* not yet emulated */ + .snd_device = &cs4236b_device, + .net_device = NULL /* not yet emulated */ + }, + /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix + MultiKey/42 (version 1.38) KBC firmware. */ + { + .name = "[i440LX] Micronics Spitfire", + .internal_name = "spitfire", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440LX, + .init = machine_at_spitfire_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal sound: Yamaha YMF701 */ + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a SM(S)C FDC37C67x Super I/O chip with on-chip KBC with Phoenix or + AMIKey-2 KBC firmware. */ + { + .name = "[i440LX] NEC Mate NX MA30D/23D", + .internal_name = "ma30d", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440LX, + .init = machine_at_ma30d_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 66666667, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCIONLY | MACHINE_BUS_USB, /* Has internal video: SGS Thompson Riva 128 AGP, network: NEC PK-UG-X006 (Intel 82558B chip) and sound: OAK Audia 3D (OTI-610) for MA23D or YAMAHA YMF724 for MA30D */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x0000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440EX */ + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440EX] QDI EXCELLENT II", + .internal_name = "p6i440e2", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440EX, + .init = machine_at_p6i440e2_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 83333333, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 3.0, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440BX */ + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] ABIT BF6", + .internal_name = "bf6", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_bf6_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] ABIT BX6", + .internal_name = "bx6", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_bx6_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1500, + .max_voltage = 3500, + .min_multi = 2.0, + .max_multi = 5.5 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] AOpen AX6BC", + .internal_name = "ax6bc", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_ax6bc_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 112121212, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] ASUS P2B-LS", + .internal_name = "p2bls", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_p2bls_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 112121212, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal SCSI: Adaptec AIC-7890AB */ + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] ASUS P3B-F", + .internal_name = "p3bf", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_p3bf_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] Gigabyte GA-686BX", + .internal_name = "686bx", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_686bx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 (updated 'H') KBC firmware. */ + { + .name = "[i440BX] LG IBM Multinet i x7G (MSI MS-6119)", + .internal_name = "lgibmx7g", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_lgibmx7g_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] Supermicro P6SBA", + .internal_name = "p6sba", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_p6sba_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a National Semiconductors PC87309 Super I/O chip with on-chip KBC + with most likely AMIKey-2 KBC firmware. */ + { + .name = "[i440BX] Tyan Tsunami ATX", + .internal_name = "s1846", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_s1846_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 112121212, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal sound: Ensoniq ES1371 */ + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &es1371_onboard_device, + .net_device = NULL + }, + + /* 440ZX */ + /* Has a SM(S)C FDC37M60x Super I/O chip with on-chip KBC with most likely + AMIKey-2 KBC firmware. */ + { + .name = "[i440ZX] HP Vectra VEi 8", + .internal_name = "vei8", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440ZX, + .init = machine_at_vei8_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: Matrox MGA-G200 and sound: Crystal CS4820 */ + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440ZX] MSI MS-6168", + .internal_name = "ms6168", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440ZX, + .init = machine_at_ms6168_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* AGP is reserved for the internal video */ + .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &voodoo_3_2000_agp_onboard_8m_device, + .snd_device = &es1373_onboard_device, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440ZX] Packard Bell Bora Pro (MSI MS-6168)", + .internal_name = "borapro", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440ZX, + .init = machine_at_borapro_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* AGP is reserved for the internal video */ + .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &voodoo_3_2000_agp_onboard_8m_device, + .snd_device = &es1373_onboard_device, + .net_device = NULL + }, + + /* SMSC VictoryBX-66 */ + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[SMSC VictoryBX-66] A-Trend ATC6310BXII", + .internal_name = "atc6310bxii", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, + .init = machine_at_atc6310bxii_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* VIA Apollo Pro */ + /* Has the VIA VT82C596B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA Apollo Pro] FIC KA-6130", + .internal_name = "ficka6130", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, + .init = machine_at_ficka6130_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: ESS ES1938S */ + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[VIA Apollo Pro 133] ASUS P3V133", + .internal_name = "p3v133", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, + .init = machine_at_p3v133_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[VIA Apollo Pro 133A] ASUS P3V4X", + .internal_name = "p3v4x", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, + .init = machine_at_p3v4x_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK(CPU_PENTIUMPRO), + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 2097152, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[VIA Apollo Pro 133A] BCM GT694VA", + .internal_name = "gt694va", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, + .init = machine_at_gt694va_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Ensoniq ES1373 */ + .ram = { + .min = 8192, + .max = 3145728, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = &kbc_at_device, + .kbc_params = KBC_VEN_AMI | 0x00004800, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &es1373_onboard_device, + .net_device = NULL + }, + + /* SiS (5)600 */ + /* Has the SiS (5)600 chipset with on-chip KBC. */ + { + .name = "[SiS 5600] Freetech/Flexus P6F99", + .internal_name = "p6f99", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_SIS_5600, + .init = machine_at_p6f99_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Ensoniq ES1373 */ + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &es1373_onboard_device, + .net_device = NULL + }, + /* Has the SiS (5)600 chipset with on-chip KBC. */ + { + .name = "[SiS 5600] PC Chips M747", + .internal_name = "m747", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_SIS_5600, + .init = machine_at_m747_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: SiS 6326 and internal sound: C-Media CMI8330 */ - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Slot 1/2 machines */ - /* 440GX */ - /* Has a National Semiconductors PC87309 Super I/O chip with on-chip KBC - with most likely AMIKey-2 KBC firmware. */ - { - .name = "[i440GX] Freeway FW-6400GX", - .internal_name = "fw6400gx", - .type = MACHINE_TYPE_SLOT1_2, - .chipset = MACHINE_CHIPSET_INTEL_440GX, - .init = machine_at_fw6400gx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1 | CPU_PKG_SLOT2, - .block = CPU_BLOCK_NONE, - .min_bus = 100000000, - .max_bus = 150000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 3.0, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_NOISA | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 16384, - .max = 2097152, - .step = 16384 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Slot 1/Socket 370 machines */ - /* 440BX */ - /* OEM version of ECS P6BXT-A+ REV 1.3x/2.2x. Has a Winbond W83977EF Super - I/O chip with on-chip KBC with AMIKey-2 KBC firmware.*/ - { - .name = "[i440BX] Compaq ProSignia S316/318 (Intel)", - .internal_name = "prosignias31x_bx", - .type = MACHINE_TYPE_SLOT1_370, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, - .init = machine_at_prosignias31x_bx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, - .block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_CYRIX3S), /* Instability issues with PPro, and garbled text in POST with Cyrix */ - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cmi8738_onboard_device, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] Tyan Trinity 371", - .internal_name = "s1857", - .type = MACHINE_TYPE_SLOT1_370, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_s1857_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &es1373_onboard_device, - .net_device = NULL - }, - /* VIA Apollo Pro */ - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[VIA Apollo Pro 133] ECS P6BAT-A+", - .internal_name = "p6bat", - .type = MACHINE_TYPE_SLOT1_370, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, - .init = machine_at_p6bat_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cmi8738_onboard_device, - .net_device = NULL - }, - - /* Slot 2 machines */ - /* 440GX */ - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440GX] Gigabyte GA-6GXU", - .internal_name = "6gxu", - .type = MACHINE_TYPE_SLOT2, - .chipset = MACHINE_CHIPSET_INTEL_440GX, - .init = machine_at_6gxu_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT2, - .block = CPU_BLOCK_NONE, - .min_bus = 100000000, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal SCSI */ - .ram = { - .min = 16384, - .max = 2097152, - .step = 16384 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440GX] Supermicro S2DGE", - .internal_name = "s2dge", - .type = MACHINE_TYPE_SLOT2, - .chipset = MACHINE_CHIPSET_INTEL_440GX, - .init = machine_at_s2dge_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT2, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 16384, - .max = 2097152, - .step = 16384 - }, - .nvrmask = 511, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* PGA370 machines */ - /* 440LX */ - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440LX] Supermicro 370SLM", - .internal_name = "s370slm", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_INTEL_440LX, - .init = machine_at_s370slm_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED, - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440BX */ - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] AEWIN AW-O671R", - .internal_name = "awo671r", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_awo671r_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 /* limits assumed */ - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has EISA, possibly for a riser? */ - /* Yes, that's a rise slot, not EISA. */ - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB | MACHINE_VIDEO, /* Machine has internal video: C&T B69000, sound: ESS ES1938S and NIC: Realtek RTL8139C */ - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = &chips_69000_onboard_device, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] ASUS CUBX", - .internal_name = "cubx", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_cubx_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_QUAD | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has quad channel IDE with internal controller: CMD PCI-0648 */ - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] AmazePC AM-BX133", - .internal_name = "ambx133", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_ambx133_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 /* limits assumed */ - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* 440ZX */ - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440ZX] Soltek SL-63A1", - .internal_name = "63a1", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_INTEL_440ZX, - .init = machine_at_63a1_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* SMSC VictoryBX-66 */ - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[SMSC VictoryBX-66] A-Trend ATC7020BXII", - .internal_name = "atc7020bxii", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, - .init = machine_at_atc7020bxii_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has an ITE IT8671F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[SMSC VictoryBX-66] PC Chips M773", - .internal_name = "m773", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, - .init = machine_at_m773_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 133333333, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 8192, - .max = 524288, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cmi8738_onboard_device, - .net_device = NULL - }, - - /* VIA Apollo Pro */ - /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA Apollo Pro] PC Partner APAS3", - .internal_name = "apas3", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, - .init = machine_at_apas3_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Slot 1/2 machines */ + /* 440GX */ + /* Has a National Semiconductors PC87309 Super I/O chip with on-chip KBC + with most likely AMIKey-2 KBC firmware. */ + { + .name = "[i440GX] Freeway FW-6400GX", + .internal_name = "fw6400gx", + .type = MACHINE_TYPE_SLOT1_2, + .chipset = MACHINE_CHIPSET_INTEL_440GX, + .init = machine_at_fw6400gx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1 | CPU_PKG_SLOT2, + .block = CPU_BLOCK_NONE, + .min_bus = 100000000, + .max_bus = 150000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 3.0, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_NOISA | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 16384, + .max = 2097152, + .step = 16384 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000044f0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Slot 1/Socket 370 machines */ + /* 440BX */ + /* OEM version of ECS P6BXT-A+ REV 1.3x/2.2x. Has a Winbond W83977EF Super + I/O chip with on-chip KBC with AMIKey-2 KBC firmware.*/ + { + .name = "[i440BX] Compaq ProSignia S316/318 (Intel)", + .internal_name = "prosignias31x_bx", + .type = MACHINE_TYPE_SLOT1_370, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, + .init = machine_at_prosignias31x_bx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, + .block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_CYRIX3S), /* Instability issues with PPro, and garbled text in POST with Cyrix */ + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cmi8738_onboard_device, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] Tyan Trinity 371", + .internal_name = "s1857", + .type = MACHINE_TYPE_SLOT1_370, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_s1857_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &es1373_onboard_device, + .net_device = NULL + }, + /* VIA Apollo Pro */ + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[VIA Apollo Pro 133] ECS P6BAT-A+", + .internal_name = "p6bat", + .type = MACHINE_TYPE_SLOT1_370, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, + .init = machine_at_p6bat_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cmi8738_onboard_device, + .net_device = NULL + }, + + /* Slot 2 machines */ + /* 440GX */ + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440GX] Gigabyte GA-6GXU", + .internal_name = "6gxu", + .type = MACHINE_TYPE_SLOT2, + .chipset = MACHINE_CHIPSET_INTEL_440GX, + .init = machine_at_6gxu_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT2, + .block = CPU_BLOCK_NONE, + .min_bus = 100000000, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal SCSI */ + .ram = { + .min = 16384, + .max = 2097152, + .step = 16384 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440GX] Supermicro S2DGE", + .internal_name = "s2dge", + .type = MACHINE_TYPE_SLOT2, + .chipset = MACHINE_CHIPSET_INTEL_440GX, + .init = machine_at_s2dge_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT2, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 16384, + .max = 2097152, + .step = 16384 + }, + .nvrmask = 511, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* PGA370 machines */ + /* 440LX */ + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440LX] Supermicro 370SLM", + .internal_name = "s370slm", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_INTEL_440LX, + .init = machine_at_s370slm_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED, + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440BX */ + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] AEWIN AW-O671R", + .internal_name = "awo671r", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_awo671r_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 /* limits assumed */ + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has EISA, possibly for a riser? */ + /* Yes, that's a rise slot, not EISA. */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB | MACHINE_VIDEO, /* Machine has internal video: C&T B69000, sound: ESS ES1938S and NIC: Realtek RTL8139C */ + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &chips_69000_onboard_device, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] AmazePC AM-BX133", + .internal_name = "ambx133", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_ambx133_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 /* limits assumed */ + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] ASUS CUBX", + .internal_name = "cubx", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_cubx_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_QUAD | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has quad channel IDE with internal controller: CMD PCI-0648 */ + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* 440ZX */ + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440ZX] Soltek SL-63A1", + .internal_name = "63a1", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_INTEL_440ZX, + .init = machine_at_63a1_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* SMSC VictoryBX-66 */ + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[SMSC VictoryBX-66] A-Trend ATC7020BXII", + .internal_name = "atc7020bxii", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, + .init = machine_at_atc7020bxii_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has an ITE IT8671F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[SMSC VictoryBX-66] PC Chips M773", + .internal_name = "m773", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, + .init = machine_at_m773_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 133333333, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 8192, + .max = 524288, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cmi8738_onboard_device, + .net_device = NULL + }, + + /* VIA Apollo Pro */ + /* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA Apollo Pro] PC Partner APAS3", + .internal_name = "apas3", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, + .init = machine_at_apas3_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, /* Machine has internal video: Creative Vibra 16XV */ - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[VIA Apollo Pro 133] ECS P6BAP-A+", - .internal_name = "p6bap", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, - .init = machine_at_p6bap_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB | MACHINE_SOUND, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cmi8738_onboard_device, - .net_device = NULL - }, - /* Has the VIA VT82C686B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA Apollo Pro 133A] Acorp 6VIA90AP", - .internal_name = "6via90ap", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, - .init = machine_at_6via90ap_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = MACHINE_MULTIPLIER_FIXED, - .max_multi = MACHINE_MULTIPLIER_FIXED - }, - .bus_flags = MACHINE_PS2_A97 | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_AG | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 16384, - .max = 3145728, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has the VIA VT82C686B southbridge with on-chip KBC identical to the VIA - VT82C42N. */ - { - .name = "[VIA Apollo Pro 133A] ASUS CUV4X-LS", - .internal_name = "cuv4xls", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, - .init = machine_at_cuv4xls_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 150000000, - .min_voltage = 1300, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_NOI97 | MACHINE_BUS_USB, /* Has Asus-proprietary LAN/SCSI slot */ - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, - .ram = { - .min = 16384, - .max = 4194304, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = &cmi8738_onboard_device, - .net_device = NULL - }, - /* SiS (5)600 */ - /* Has the SiS 600 chipset, which is a re-brand of the 5600, with - on-chip KBC. */ - { - .name = "[SiS 600] Soyo SY-7SBB", - .internal_name = "7sbb", - .type = MACHINE_TYPE_SOCKET370, - .chipset = MACHINE_CHIPSET_SIS_5600, - .init = machine_at_7sbb_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SOCKET370, - .block = CPU_BLOCK(CPU_CYRIX3S), - .min_bus = 60000000, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1572864, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - /* Miscellaneous/Fake/Hypervisor machines */ - /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC - firmware. */ - { - .name = "[i440BX] Microsoft Virtual PC 2007", - .internal_name = "vpc2007", - .type = MACHINE_TYPE_MISC, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_vpc2007_init, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_PENTIUM2, CPU_CYRIX3S), - .min_bus = 0, - .max_bus = 66666667, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 1048576, - .step = 8192 - }, - .nvrmask = 255, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - - { - .name = NULL, - .internal_name = NULL, - .type = MACHINE_TYPE_NONE, - .chipset = MACHINE_CHIPSET_NONE, - .init = NULL, - .p1_handler = NULL, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = 0, - .block = CPU_BLOCK_NONE, - .min_bus = 0, - .max_bus = 0, - .min_voltage = 0, - .max_voltage = 0, - .min_multi = 0, - .max_multi = 0 - }, - .bus_flags = MACHINE_BUS_NONE, - .flags = MACHINE_FLAGS_NONE, - .ram = { - .min = 0, - .max = 0, - .step = 0 - }, - .nvrmask = 0, - .kbc_device = NULL, - .kbc_p1 = 0xff, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - } - // clang-format on -}; - -/* Saved copies - jumpers get applied to these. - We use also machine_gpio to store IBM PC/XT jumpers as they need more than one byte. */ -static uint32_t machine_p1_default; -static uint32_t machine_p1; - -static uint32_t machine_gpio_default; -static uint32_t machine_gpio; - -static uint32_t machine_gpio_acpi_default; -static uint32_t machine_gpio_acpi; - -void *machine_snd = NULL; - -uint8_t -machine_get_p1_default(void) -{ - return machine_p1_default; -} - -uint8_t -machine_get_p1(void) -{ - return machine_p1; -} - -void -machine_set_p1_default(uint8_t val) -{ - machine_p1 = machine_p1_default = val; -} - -void -machine_set_p1(uint8_t val) -{ - machine_p1 = val; -} - -void -machine_and_p1(uint8_t val) -{ - machine_p1 = machine_p1_default & val; -} - -uint8_t -machine_handle_p1(uint8_t write, uint8_t val) -{ - uint8_t ret = 0xff; - - if (machines[machine].p1_handler) - ret = machines[machine].p1_handler(write, val); - else { - if (write) - machine_p1 = machine_p1_default & val; - else - ret = machine_p1; - } - - return ret; -} - -void -machine_init_p1(void) -{ - machine_p1 = machine_p1_default = machines[machine].kbc_p1; -} - -uint32_t -machine_get_gpio_default(void) -{ - return machine_gpio_default; -} - -uint32_t -machine_get_gpio(void) -{ - return machine_gpio; -} - -void -machine_set_gpio_default(uint32_t val) -{ - machine_gpio = machine_gpio_default = val; -} - -void -machine_set_gpio(uint32_t val) -{ - machine_gpio = val; -} - -void -machine_and_gpio(uint32_t val) -{ - machine_gpio = machine_gpio_default & val; -} - -uint32_t -machine_handle_gpio(uint8_t write, uint32_t val) -{ - uint32_t ret = 0xffffffff; - - if (machines[machine].gpio_handler) - ret = machines[machine].gpio_handler(write, val); - else { - if (write) - machine_gpio = machine_gpio_default & val; - else - ret = machine_gpio; - } - - return ret; -} - -void -machine_init_gpio(void) -{ - machine_gpio = machine_gpio_default = machines[machine].gpio; -} - -uint32_t -machine_get_gpio_acpi_default(void) -{ - return machine_gpio_acpi_default; -} - -uint32_t -machine_get_gpio_acpi(void) -{ - return machine_gpio_acpi; -} - -void -machine_set_gpio_acpi_default(uint32_t val) -{ - machine_gpio_acpi = machine_gpio_acpi_default = val; -} - -void -machine_set_gpio_acpi(uint32_t val) -{ - machine_gpio_acpi = val; -} - -void -machine_and_gpio_acpi(uint32_t val) -{ - machine_gpio_acpi = machine_gpio_acpi_default & val; -} - -uint32_t -machine_handle_gpio_acpi(uint8_t write, uint32_t val) -{ - uint32_t ret = 0xffffffff; - - if (machines[machine].gpio_acpi_handler) - ret = machines[machine].gpio_acpi_handler(write, val); - else { - if (write) - machine_gpio_acpi = machine_gpio_acpi_default & val; - else - ret = machine_gpio_acpi; - } - - return ret; -} - -void -machine_init_gpio_acpi(void) -{ - machine_gpio_acpi = machine_gpio_acpi_default = machines[machine].gpio_acpi; -} - -int -machine_count(void) -{ - return ((sizeof(machines) / sizeof(machine_t)) - 1); -} - -const char * -machine_getname(void) -{ - return (machines[machine].name); -} - -const char * -machine_getname_ex(int m) -{ - return (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) -{ - if (machines[m].device) - return (machines[m].device); - - 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_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) -{ - if (machines[m].vid_device) - return (machines[m].vid_device); - - return (NULL); -} - -const device_t * -machine_get_snd_device(int m) -{ - if (machines[m].snd_device) - return (machines[m].snd_device); - - return (NULL); -} - -const device_t * -machine_get_net_device(int m) -{ - if (machines[m].net_device) - return (machines[m].net_device); - - return (NULL); -} - -const char * -machine_get_internal_name(void) -{ - return (machines[machine].internal_name); -} - -const char * -machine_get_internal_name_ex(int m) -{ - return (machines[m].internal_name); -} - -int -machine_get_nvrmask(int m) -{ - return (machines[m].nvrmask); -} - -int -machine_has_flags(int m, int flags) -{ - int ret = machines[m].flags & flags; - - /* Can't have PS/2 ports with an AT KBC. */ - if ((flags & MACHINE_PS2_KBC) && - (machines[m].bus_flags & MACHINE_BUS_PS2_PORTS)) - ret |= MACHINE_PS2_KBC; - - return ret; -} - -int -machine_has_bus(int m, int bus_flags) -{ - int ret = machines[m].bus_flags & bus_flags; - - /* TODO: Move the KBD flags to the machine table! */ - if ((bus_flags & MACHINE_BUS_XT_KBD) && - !(machines[m].bus_flags & MACHINE_BUS_ISA16) && + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[VIA Apollo Pro 133] ECS P6BAP-A+", + .internal_name = "p6bap", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, + .init = machine_at_p6bap_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB | MACHINE_SOUND, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cmi8738_onboard_device, + .net_device = NULL + }, + /* Has the VIA VT82C686B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA Apollo Pro 133A] Acorp 6VIA90AP", + .internal_name = "6via90ap", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, + .init = machine_at_6via90ap_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = MACHINE_MULTIPLIER_FIXED, + .max_multi = MACHINE_MULTIPLIER_FIXED + }, + .bus_flags = MACHINE_PS2_A97 | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_AG | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 16384, + .max = 3145728, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + /* Has the VIA VT82C686B southbridge with on-chip KBC identical to the VIA + VT82C42N. */ + { + .name = "[VIA Apollo Pro 133A] ASUS CUV4X-LS", + .internal_name = "cuv4xls", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, + .init = machine_at_cuv4xls_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 150000000, + .min_voltage = 1300, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_NOI97 | MACHINE_BUS_USB, /* Has Asus-proprietary LAN/SCSI slot */ + .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, + .ram = { + .min = 16384, + .max = 4194304, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = &cmi8738_onboard_device, + .net_device = NULL + }, + /* SiS (5)600 */ + /* Has the SiS 600 chipset, which is a re-brand of the 5600, with + on-chip KBC. */ + { + .name = "[SiS 600] Soyo SY-7SBB", + .internal_name = "7sbb", + .type = MACHINE_TYPE_SOCKET370, + .chipset = MACHINE_CHIPSET_SIS_5600, + .init = machine_at_7sbb_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET370, + .block = CPU_BLOCK(CPU_CYRIX3S), + .min_bus = 60000000, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1572864, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + /* Miscellaneous/Fake/Hypervisor machines */ + /* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC + firmware. */ + { + .name = "[i440BX] Microsoft Virtual PC 2007", + .internal_name = "vpc2007", + .type = MACHINE_TYPE_MISC, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_vpc2007_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_PENTIUM2, CPU_CYRIX3S), + .min_bus = 0, + .max_bus = 66666667, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 1048576, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, + + { + .name = NULL, + .internal_name = NULL, + .type = MACHINE_TYPE_NONE, + .chipset = MACHINE_CHIPSET_NONE, + .init = NULL, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = 0, + .block = CPU_BLOCK_NONE, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, + .min_multi = 0, + .max_multi = 0 + }, + .bus_flags = MACHINE_BUS_NONE, + .flags = MACHINE_FLAGS_NONE, + .ram = { + .min = 0, + .max = 0, + .step = 0 + }, + .nvrmask = 0, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000000, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + } + // clang-format on +}; + +/* This is so Disabled comes first. */ +static const int dma_mapping[9] = { DMA_NONE, DMA_DISABLED, 0, 1, 2, 3, 5, 6, 7 }; +static const char *dma_names[9] = { "None", "Disabled", "0", "1", "2", "3", "5", "6", "7" }; + +/* Saved copies - jumpers get applied to these. + We use also machine_gpio to store IBM PC/XT jumpers as they need more than one byte. */ +static uint32_t machine_p1_default; +static uint32_t machine_p1; + +static uint32_t machine_gpio_default; +static uint32_t machine_gpio; + +static uint32_t machine_gpio_acpi_default; +static uint32_t machine_gpio_acpi; + +static int machine_is_ps2 = 0; + +void *machine_snd = NULL; + +uint8_t +machine_get_p1_default(void) +{ + return machine_p1_default; +} + +void +machine_set_p1_default(uint8_t val) +{ + machine_p1 = machine_p1_default = val; +} + +void +machine_set_p1(uint8_t val) +{ + machine_p1 = val; +} + +void +machine_and_p1(uint8_t val) +{ + machine_p1 = machine_p1_default & val; +} + +uint8_t +machine_generic_p1_handler(void) +{ + return video_is_mda() ? 0xf0 : 0xb0; +} + +uint8_t +machine_get_p1(uint8_t kbc_p1) +{ + uint8_t low_bits = ((machine_p1 >> 8) + 1) & 0x03; + uint8_t ret = 0xff; + + if (machines[machine].p1_handler) + ret = machines[machine].p1_handler(); + + ret &= (machine_p1 & 0xff); + + ret |= ((machine_p1 >> 8) & 0xff); + + ret ^= ((machine_p1 >> 16) & 0xff); + + ret &= kbc_p1; + + machine_p1 = (machine_p1 & 0xfffffcff) | (low_bits << 8); + + return ret; +} + +void +machine_init_p1(void) +{ + machine_p1 = machine_p1_default = machines[machine].kbc_p1; +} + +uint32_t +machine_get_gpio_default(void) +{ + return machine_gpio_default; +} + +uint32_t +machine_get_gpio(void) +{ + return machine_gpio; +} + +void +machine_set_gpio_default(uint32_t val) +{ + machine_gpio = machine_gpio_default = val; +} + +void +machine_set_gpio(uint32_t val) +{ + machine_gpio = val; +} + +void +machine_and_gpio(uint32_t val) +{ + machine_gpio = machine_gpio_default & val; +} + +uint32_t +machine_handle_gpio(uint8_t write, uint32_t val) +{ + uint32_t ret = 0xffffffff; + + if (machines[machine].gpio_handler) + ret = machines[machine].gpio_handler(write, val); + else { + if (write) + machine_gpio = machine_gpio_default & val; + else + ret = machine_gpio; + } + + return ret; +} + +void +machine_init_gpio(void) +{ + machine_gpio = machine_gpio_default = machines[machine].gpio; +} + +uint32_t +machine_get_gpio_acpi_default(void) +{ + return machine_gpio_acpi_default; +} + +uint32_t +machine_get_gpio_acpi(void) +{ + return machine_gpio_acpi; +} + +void +machine_set_gpio_acpi_default(uint32_t val) +{ + machine_gpio_acpi = machine_gpio_acpi_default = val; +} + +void +machine_set_gpio_acpi(uint32_t val) +{ + machine_gpio_acpi = val; +} + +void +machine_and_gpio_acpi(uint32_t val) +{ + machine_gpio_acpi = machine_gpio_acpi_default & val; +} + +uint32_t +machine_handle_gpio_acpi(uint8_t write, uint32_t val) +{ + uint32_t ret = 0xffffffff; + + if (machines[machine].gpio_acpi_handler) + ret = machines[machine].gpio_acpi_handler(write, val); + else { + if (write) + machine_gpio_acpi = machine_gpio_acpi_default & val; + else + ret = machine_gpio_acpi; + } + + return ret; +} + +void +machine_init_gpio_acpi(void) +{ + machine_gpio_acpi = machine_gpio_acpi_default = machines[machine].gpio_acpi; +} + +int +machine_count(void) +{ + return ((sizeof(machines) / sizeof(machine_t)) - 1); +} + +const char * +machine_getname(void) +{ + return (machines[machine].name); +} + +const char * +machine_getname_ex(int m) +{ + return (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) +{ + if (machines[m].device) + return (machines[m].device); + + 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_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) +{ + if (machines[m].vid_device) + return (machines[m].vid_device); + + return (NULL); +} + +const device_t * +machine_get_snd_device(int m) +{ + if (machines[m].snd_device) + return (machines[m].snd_device); + + return (NULL); +} + +const device_t * +machine_get_net_device(int m) +{ + if (machines[m].net_device) + return (machines[m].net_device); + + return (NULL); +} + +const char * +machine_get_internal_name(void) +{ + return (machines[machine].internal_name); +} + +const char * +machine_get_internal_name_ex(int m) +{ + return (machines[m].internal_name); +} + +int +machine_get_nvrmask(int m) +{ + return (machines[m].nvrmask); +} + +int +machine_has_flags(int m, int flags) +{ + int ret = machines[m].flags & flags; + + /* Can't have PS/2 ports with an AT KBC. */ + if ((flags & MACHINE_PS2_KBC) && + (machines[m].bus_flags & MACHINE_BUS_PS2_PORTS)) + ret |= MACHINE_PS2_KBC; + + return ret; +} + +void +machine_set_ps2(void) +{ + if (machines[machine].bus_flags & MACHINE_BUS_PS2_PORTS) + machine_is_ps2 = 1; + else + machine_is_ps2 = 0; +} + +void +machine_force_ps2(int is_ps2) +{ + machine_is_ps2 = is_ps2; +} + +int +machine_has_flags_ex(int flags) +{ + int ret = machine_has_flags(machine, flags); + + if (flags & MACHINE_PS2_KBC) { + if (machine_is_ps2) + ret |= MACHINE_PS2_KBC; + else + ret &= ~MACHINE_PS2_KBC; + } + + return ret; +} + +int +machine_has_bus(int m, int bus_flags) +{ + int ret = machines[m].bus_flags & bus_flags; + + /* TODO: Move the KBD flags to the machine table! */ + if ((bus_flags & MACHINE_BUS_XT_KBD) && + !(machines[m].bus_flags & MACHINE_BUS_ISA16) && (!(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS) || !(strcmp(machine_get_internal_name(), "pc5086")))) ret |= MACHINE_BUS_XT_KBD; -#ifdef ONLY_AT_KBD_ON_AT_KBC - if ((bus_flags & MACHINE_BUS_AT_KBD) && - (IS_AT(m)) && - !(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS)) +#ifdef ONLY_AT_KBD_ON_AT_KBC + if ((bus_flags & MACHINE_BUS_AT_KBD) && + (IS_AT(m)) && + !(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS)) ret |= MACHINE_BUS_AT_KBD; #else - if ((bus_flags & MACHINE_BUS_AT_KBD) && (IS_AT(m))) + if ((bus_flags & MACHINE_BUS_AT_KBD) && (IS_AT(m))) ret |= MACHINE_BUS_AT_KBD; #endif - - return ret; -} - -int -machine_has_cartridge(int m) -{ - return (machine_has_flags(m, MACHINE_CARTRIDGE) ? 1 : 0); -} - -int -machine_get_min_ram(int m) -{ - return (machines[m].ram.min); -} - -int -machine_get_max_ram(int m) -{ -#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)) - return MIN(((int) machines[m].ram.max), 2097152); -#else - return MIN(((int) machines[m].ram.max), 3145728); -#endif -} - -int -machine_get_ram_granularity(int m) -{ - return (machines[m].ram.step); -} - -int -machine_get_type(int m) -{ - return (machines[m].type); -} - -int -machine_get_chipset(int m) -{ - return (machines[m].chipset); -} - -int -machine_get_machine_from_internal_name(const char *s) -{ - int c = 0; - - while (machines[c].init != NULL) { - if (!strcmp(machines[c].internal_name, s)) - return c; - c++; - } - - return 0; -} - -int -machine_has_mouse(void) -{ - return (machines[machine].flags & MACHINE_MOUSE); -} - -int -machine_is_sony(void) -{ - return (!strcmp(machines[machine].internal_name, "pcv90")); -} - -const char * -machine_get_nvr_name_ex(int m) -{ - const char *ret = machines[m].internal_name; - const device_t *dev = machine_get_device(m); - - if (dev != NULL) { - device_context(dev); - const char *bios = device_get_config_string("bios"); - if ((bios != NULL) && (strcmp(bios, "") != 0)) - ret = bios; - device_context_restore(); - } - - return ret; -} - -const char * -machine_get_nvr_name(void) -{ - return machine_get_nvr_name_ex(machine); -} - + + return ret; +} + +int +machine_has_cartridge(int m) +{ + return (machine_has_flags(m, MACHINE_CARTRIDGE) ? 1 : 0); +} + +int +machine_has_jumpered_ecp_dma(int m, int dma) +{ + if (dma == DMA_ANY) + return !!(machines[m].jumpered_ecp_dma & MACHINE_DMA_JUMPERS_MASK); + else + return !!(machines[m].jumpered_ecp_dma & (1 << dma)); +} + +int +machine_get_default_jumpered_ecp_dma(int m) +{ + return machines[m].default_jumpered_ecp_dma; +} + +int +machine_map_jumpered_ecp_dma(int dma) +{ + return dma_mapping[dma]; +} + +const char * +machine_get_jumpered_ecp_dma_name(int dma) +{ + return dma_names[dma]; +} + +int +machine_get_min_ram(int m) +{ + return (machines[m].ram.min); +} + +int +machine_get_max_ram(int m) +{ +#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)) + return MIN(((int) machines[m].ram.max), 2097152); +#else + return MIN(((int) machines[m].ram.max), 3145728); +#endif +} + +int +machine_get_ram_granularity(int m) +{ + return (machines[m].ram.step); +} + +int +machine_get_type(int m) +{ + return (machines[m].type); +} + +int +machine_get_chipset(int m) +{ + return (machines[m].chipset); +} + +int +machine_get_machine_from_internal_name(const char *s) +{ + int c = 0; + + while (machines[c].init != NULL) { + if (!strcmp(machines[c].internal_name, s)) + return c; + c++; + } + + return 0; +} + +int +machine_has_mouse(void) +{ + return (machines[machine].flags & MACHINE_MOUSE); +} + +int +machine_is_sony(void) +{ + return (!strcmp(machines[machine].internal_name, "pcv90")); +} + +const char * +machine_get_nvr_name_ex(int m) +{ + const char *ret = machines[m].internal_name; + const device_t *dev = machine_get_device(m); + + if (dev != NULL) { + device_context(dev); + const char *bios = device_get_config_string("bios"); + if ((bios != NULL) && (strcmp(bios, "") != 0)) + ret = bios; + device_context_restore(); + } + + return ret; +} + +const char * +machine_get_nvr_name(void) +{ + return machine_get_nvr_name_ex(machine); +} diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt index bf2be70db..87ff7293a 100644 --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -265,6 +265,7 @@ add_library(ui STATIC qt_iconindicators.hpp qt_iconindicators.cpp + qt_cgasettingsdialog.hpp qt_cgasettingsdialog.cpp qt_cgasettingsdialog.ui ) if(EMU_BUILD_NUM) @@ -381,6 +382,8 @@ if (WIN32) target_sources(ui PRIVATE qt_winrawinputfilter.hpp qt_winrawinputfilter.cpp + qt_vmmanager_windarkmodefilter.hpp + qt_vmmanager_windarkmodefilter.cpp qt_winmanagerfilter.hpp qt_winmanagerfilter.cpp ) @@ -583,7 +586,6 @@ foreach(po_file ${po_files}) string(REGEX MATCH "[A-Z]+$" PO_COUNTRY ${PO_FILE_NAME}) # Find the base Qt translation for the language and country - set(qt_translation_file_dest "qt_${PO_LANGUAGE}_${PO_COUNTRY}.qm") if (EXISTS "${QT_TRANSLATIONS_DIR}/qtbase_${PO_LANGUAGE}_${PO_COUNTRY}.qm") set(qt_translation_file "qtbase_${PO_LANGUAGE}_${PO_COUNTRY}.qm") # Fall back to just the language if country isn't found @@ -602,13 +604,9 @@ foreach(po_file ${po_files}) # Copy the translation file to the build directory if (qt_translation_file) file(COPY "${QT_TRANSLATIONS_DIR}/${qt_translation_file}" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - if (NOT (qt_translation_file STREQUAL qt_translation_file_dest)) - # Rename the file for consistency - file(RENAME "${CMAKE_CURRENT_BINARY_DIR}/${qt_translation_file}" "${CMAKE_CURRENT_BINARY_DIR}/${qt_translation_file_dest}") - endif() # Add the file to the translations list - string(APPEND QT_TRANSLATIONS_LIST " ${qt_translation_file_dest}\n") - list(APPEND QM_FILES "${CMAKE_CURRENT_BINARY_DIR}/${qt_translation_file_dest}") + string(APPEND QT_TRANSLATIONS_LIST " ${qt_translation_file}\n") + list(APPEND QM_FILES "${CMAKE_CURRENT_BINARY_DIR}/${qt_translation_file}") endif() endif() diff --git a/src/qt/assets/addvm-logo.png b/src/qt/assets/addvm-logo.png new file mode 100644 index 000000000..926daf342 Binary files /dev/null and b/src/qt/assets/addvm-logo.png differ diff --git a/src/qt/assets/addvm-logo.svg b/src/qt/assets/addvm-logo.svg new file mode 100644 index 000000000..ab7a032ea --- /dev/null +++ b/src/qt/assets/addvm-logo.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/qt/assets/addvm-watermark.png b/src/qt/assets/addvm-watermark.png new file mode 100644 index 000000000..8d8983342 Binary files /dev/null and b/src/qt/assets/addvm-watermark.png differ diff --git a/src/qt/assets/addvm-watermark.svg b/src/qt/assets/addvm-watermark.svg new file mode 100644 index 000000000..e46171186 --- /dev/null +++ b/src/qt/assets/addvm-watermark.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot index 54a6bb204..bcce43afd 100644 --- a/src/qt/languages/86box.pot +++ b/src/qt/languages/86box.pot @@ -57,9 +57,6 @@ msgstr "" msgid "&Qt (Software)" msgstr "" -msgid "Qt (&OpenGL)" -msgstr "" - msgid "Open&GL (3.0 Core)" msgstr "" @@ -69,7 +66,7 @@ msgstr "" msgid "Specify &dimensions..." msgstr "" -msgid "F&orce 4:3 display ratio" +msgid "Force &4:3 display ratio" msgstr "" msgid "&Window scale factor" @@ -138,7 +135,7 @@ msgstr "" msgid "4:&3 Integer scale" msgstr "" -msgid "E&GA/(S)VGA settings" +msgid "EGA/(S)&VGA settings" msgstr "" msgid "&Inverted VGA monitor" @@ -519,6 +516,9 @@ msgstr "" msgid "LPT4 Device:" msgstr "" +msgid "Internal LPT ECP DMA:" +msgstr "" + msgid "Serial port 1" msgstr "" @@ -774,10 +774,10 @@ msgstr "" msgid "Ports" msgstr "" -msgid "Serial ports" +msgid "Serial ports:" msgstr "" -msgid "Parallel ports" +msgid "Parallel ports:" msgstr "" msgid "Storage controllers" @@ -1083,16 +1083,25 @@ msgstr "" msgid "Paused" msgstr "" -msgid "Paused (Waiting)" +msgid "Waiting" msgstr "" msgid "Powered Off" msgstr "" -msgid "waiting" +msgid "%n running" msgstr "" -msgid "total" +msgid "%n paused" +msgstr "" + +msgid "%n waiting" +msgstr "" + +msgid "%1 total" +msgstr "" + +msgid "VMs: %1" msgstr "" msgid "System Directory:" @@ -1149,9 +1158,6 @@ msgstr "" msgid "Load configuration from file" msgstr "" -msgid "System Name" -msgstr "" - msgid "System name" msgstr "" @@ -1176,9 +1182,6 @@ msgstr "" msgid "System location:" msgstr "" -msgid "System Location" -msgstr "" - msgid "System name and location" msgstr "" @@ -1191,7 +1194,7 @@ msgstr "" msgid "Please enter a system name" msgstr "" -msgid "Display Name (optional)" +msgid "Display name (optional):" msgstr "" msgid "Display name:" @@ -1212,7 +1215,7 @@ msgstr "" msgid "&Open folder..." msgstr "" -msgid "Open &printer tray..." +msgid "Open p&rinter tray..." msgstr "" msgid "Set &icon..." @@ -1263,9 +1266,6 @@ msgstr "" msgid "Error adding system" msgstr "" -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" - msgid "Remove directory failed" msgstr "" @@ -1278,6 +1278,12 @@ msgstr "" msgid "Version" msgstr "" +msgid "An update to 86Box is available: %1 %2" +msgstr "" + +msgid "An error has occurred while checking for updates: %1" +msgstr "" + msgid "An update to 86Box is available!" msgstr "" @@ -1626,9 +1632,6 @@ msgstr "" msgid "&Tablet tool" msgstr "" -msgid "Qt (OpenGL &ES)" -msgstr "" - msgid "About &Qt" msgstr "" @@ -2442,6 +2445,9 @@ msgstr "" msgid "Composite" msgstr "" +msgid "True color" +msgstr "" + msgid "Old" msgstr "" @@ -2823,13 +2829,10 @@ msgstr "" msgid "Hostname:" msgstr "" -msgid "ISA RTC" +msgid "ISA RAM:" msgstr "" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" +msgid "ISA ROM:" msgstr "" msgid "&Wipe NVRAM" @@ -2844,7 +2847,7 @@ msgstr "" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" msgstr "" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" msgstr "" msgid "%1 VM Manager" @@ -2871,6 +2874,12 @@ msgstr "" msgid "Update check complete" msgstr "" +msgid "stable" +msgstr "" + +msgid "beta" +msgstr "" + msgid "You are running the latest %1 version of 86Box: %2" msgstr "" @@ -2880,10 +2889,19 @@ msgstr "" msgid "build" msgstr "" -msgid "You are currently running %1 %2. " +msgid "You are currently running version %1." msgstr "" -msgid "%1 %2 is now available. %3Would you like to visit the download page?" +msgid "Version %1 is now available." +msgstr "" + +msgid "You are currently running build %1." +msgstr "" + +msgid "Build %1 is now available." +msgstr "" + +msgid "Would you like to visit the download page?" msgstr "" msgid "Visit download page" @@ -2892,7 +2910,7 @@ msgstr "" msgid "Update check" msgstr "" -msgid "Checking for updates.." +msgid "Checking for updates..." msgstr "" msgid "86Box Update" @@ -2900,3 +2918,39 @@ msgstr "" msgid "Release notes:" msgstr "" + +msgid "%1 Hz" +msgstr "" + +msgid "Virtual machine crash" +msgstr "" + +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "" + +msgid "The system will not be added." +msgstr "" + +msgid "&Update mouse every CPU frame" +msgstr "" + +msgid "Hue" +msgstr "" + +msgid "Saturation" +msgstr "" + +msgid "Contrast" +msgstr "" + +msgid "Brightness" +msgstr "" + +msgid "Sharpness" +msgstr "" + +msgid "&CGA composite settings..." +msgstr "" + +msgid "CGA composite settings" +msgstr "" diff --git a/src/qt/languages/ca-ES.po b/src/qt/languages/ca-ES.po deleted file mode 100644 index 08f17e20b..000000000 --- a/src/qt/languages/ca-ES.po +++ /dev/null @@ -1,2914 +0,0 @@ -msgid "" -msgstr "" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Language: ca_ES\n" -"X-Source-Language: en_US\n" - -msgid "&Action" -msgstr "&Acció" - -msgid "&Keyboard requires capture" -msgstr "&Teclat requereix captura" - -msgid "&Right CTRL is left ALT" -msgstr "CTRL &dret és ALT esquerre" - -msgid "&Hard Reset..." -msgstr "&Reinicialització completa ..." - -msgid "&Ctrl+Alt+Del" -msgstr "&Ctrl+Alt+Del" - -msgid "Ctrl+Alt+&Esc" -msgstr "Ctrl+Alt+&Esc" - -msgid "&Pause" -msgstr "&Pausa" - -msgid "Pause" -msgstr "" - -msgid "Re&sume" -msgstr "" - -msgid "E&xit" -msgstr "&Sortir" - -msgid "&View" -msgstr "&Vista" - -msgid "&Hide status bar" -msgstr "&Amagar barra d'estat" - -msgid "Hide &toolbar" -msgstr "Amagar &barra d'eines" - -msgid "&Resizeable window" -msgstr "&Finestra redimensionable" - -msgid "R&emember size && position" -msgstr "&Recordar grandària i posició" - -msgid "Re&nderer" -msgstr "Re&nderitzador" - -msgid "&Qt (Software)" -msgstr "&Qt (Software)" - -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - -msgid "Open&GL (3.0 Core)" -msgstr "Open&GL (3.0 Core)" - -msgid "&VNC" -msgstr "&VNC" - -msgid "Specify &dimensions..." -msgstr "E&specificar dimensions ..." - -msgid "F&orce 4:3 display ratio" -msgstr "F&orçar ràtio 4:3" - -msgid "&Window scale factor" -msgstr "&Factor d'escalat de finestra" - -msgid "&0.5x" -msgstr "&0.5x" - -msgid "&1x" -msgstr "&1x" - -msgid "1.&5x" -msgstr "1.&5x" - -msgid "&2x" -msgstr "&2x" - -msgid "&3x" -msgstr "&3x" - -msgid "&4x" -msgstr "&4x" - -msgid "&5x" -msgstr "&5x" - -msgid "&6x" -msgstr "&6x" - -msgid "&7x" -msgstr "&7x" - -msgid "&8x" -msgstr "&8x" - -msgid "Fi<er method" -msgstr "&Mètode de filtrat" - -msgid "&Nearest" -msgstr "&Més proper" - -msgid "&Linear" -msgstr "&Lineal" - -msgid "Hi&DPI scaling" -msgstr "&Escalat alta densitat" - -msgid "&Fullscreen" -msgstr "&Pantalla completa" - -msgid "Fullscreen &stretch mode" -msgstr "Escalat pantalla completa" - -msgid "&Full screen stretch" -msgstr "&Estirar" - -msgid "&4:3" -msgstr "&4:3" - -msgid "&Square pixels (Keep ratio)" -msgstr "&Píxels quadrats (Mant. aspecte)" - -msgid "&Integer scale" -msgstr "&Escala de valor enter" - -msgid "4:&3 Integer scale" -msgstr "Escala de valor enter 4:&3" - -msgid "E&GA/(S)VGA settings" -msgstr "&Ajustaments EGA/(S)VGA" - -msgid "&Inverted VGA monitor" -msgstr "&Monitor VGA invertit" - -msgid "VGA screen &type" -msgstr "&Tipus de pantalla VGA" - -msgid "RGB &Color" -msgstr "RGB &Color" - -msgid "RGB (no brown)" -msgstr "" - -msgid "&RGB Grayscale" -msgstr "RGB &Grisos" - -msgid "Generic RGBI color monitor" -msgstr "" - -msgid "&Amber monitor" -msgstr "Monitor & Ambre" - -msgid "&Green monitor" -msgstr "Monitor &Verd" - -msgid "&White monitor" -msgstr "Monitor &Blanc" - -msgid "Grayscale &conversion type" -msgstr "&Conversió a grisos" - -msgid "BT&601 (NTSC/PAL)" -msgstr "BT&601 (NTSC/PAL)" - -msgid "BT&709 (HDTV)" -msgstr "BT&709 (HDTV)" - -msgid "&Average" -msgstr "&Mitjana" - -msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" -msgstr "&Overscan CGA/PCjr/Tandy/EGA/(S)VGA" - -msgid "Change contrast for &monochrome display" -msgstr "Canviar contrast per a pantalla &monocroma" - -msgid "&Media" -msgstr "&Mitjans" - -msgid "&Tools" -msgstr "&Eines" - -msgid "&Settings..." -msgstr "&Ajustaments ..." - -msgid "Settings..." -msgstr "" - -msgid "&Update status bar icons" -msgstr "&Actualitzar icones a la barra d'estat" - -msgid "Take s&creenshot" -msgstr "Prendre c&aptura" - -msgid "S&ound" -msgstr "S&o" - -msgid "&Preferences..." -msgstr "&Preferències ..." - -msgid "Enable &Discord integration" -msgstr "Activar la integració amb el &Discord" - -msgid "Sound &gain..." -msgstr "&Guany de so ..." - -msgid "Begin trace" -msgstr "Començar traça" - -msgid "End trace" -msgstr "Acabar traça" - -msgid "&Help" -msgstr "&Ajuda" - -msgid "&Documentation..." -msgstr "&Documentació ..." - -msgid "&About 86Box..." -msgstr "&Quant a 86Box ..." - -msgid "&New image..." -msgstr "&Nova imatge ..." - -msgid "&Existing image..." -msgstr "Imatge &Existent ..." - -msgid "Existing image (&Write-protected)..." -msgstr "Imatge Existent (&Només-lectura) ..." - -msgid "&Record" -msgstr "&Gravar" - -msgid "&Play" -msgstr "&Reproduir" - -msgid "&Rewind to the beginning" -msgstr "&Rebobinar a l'inici" - -msgid "&Fast forward to the end" -msgstr "&Avanç ràpid al final" - -msgid "E&ject" -msgstr "E&xtreure" - -msgid "&Image..." -msgstr "&Imatge ..." - -msgid "E&xport to 86F..." -msgstr "E&xportar a 86F ..." - -msgid "&Mute" -msgstr "&Silenciar" - -msgid "E&mpty" -msgstr "E&xtreure disc" - -msgid "Reload previous image" -msgstr "Recarregar imatge anterior" - -msgid "&Folder..." -msgstr "&Carpeta ..." - -msgid "Target &framerate" -msgstr "objectiu de &taxa de refresc" - -msgid "&Sync with video" -msgstr "&Sincronitzar amb vídeo" - -msgid "&25 fps" -msgstr "&25 fotogrames/s" - -msgid "&30 fps" -msgstr "&30 fotogrames/s" - -msgid "&50 fps" -msgstr "&50 fotogrames/s" - -msgid "&60 fps" -msgstr "&60 fotogrames/s" - -msgid "&75 fps" -msgstr "&75 fotogrames/s" - -msgid "&VSync" -msgstr "&VSync" - -msgid "&Select shader..." -msgstr "&Seleccionar shader ..." - -msgid "&Remove shader" -msgstr "S&upressió de shader" - -msgid "Preferences" -msgstr "Preferències" - -msgid "Sound Gain" -msgstr "Guany de So" - -msgid "New Image" -msgstr "Nova Imatge" - -msgid "Settings" -msgstr "Ajustaments" - -msgid "Specify Main Window Dimensions" -msgstr "Especificar Dimensions de la Finestra Principal" - -msgid "OK" -msgstr "D'acord" - -msgid "Cancel" -msgstr "Anuŀlació" - -msgid "&Default" -msgstr "&Per defecte" - -msgid "Language:" -msgstr "Idioma:" - -msgid "Gain" -msgstr "Guany" - -msgid "File name:" -msgstr "Nom del fitxer:" - -msgid "Disk size:" -msgstr "Grandària de disc:" - -msgid "RPM mode:" -msgstr "Mode RPM:" - -msgid "Progress:" -msgstr "Progrés:" - -msgid "Width:" -msgstr "Amplada:" - -msgid "Height:" -msgstr "Alçada:" - -msgid "Lock to this size" -msgstr "Bloquejar aquesta grandària" - -msgid "Machine type:" -msgstr "Tipus de màquina:" - -msgid "Machine:" -msgstr "Màquina:" - -msgid "Configure" -msgstr "Configurar" - -msgid "CPU:" -msgstr "" - -msgid "CPU type:" -msgstr "Tipus de CPU:" - -msgid "Speed:" -msgstr "Velocitat:" - -msgid "Frequency:" -msgstr "Freqüència:" - -msgid "FPU:" -msgstr "FPU:" - -msgid "Wait states:" -msgstr "Estats en espera:" - -msgid "MB" -msgstr "MB" - -msgid "Memory:" -msgstr "Memòria:" - -msgid "Time synchronization" -msgstr "Sincronització horària" - -msgid "Disabled" -msgstr "Deshabilitat" - -msgid "Enabled (local time)" -msgstr "Activat (hora local)" - -msgid "Enabled (UTC)" -msgstr "Activat (UTC)" - -msgid "Dynamic Recompiler" -msgstr "Recopilador Dinàmic" - -msgid "CPU frame size" -msgstr "" - -msgid "Larger frames (less smooth)" -msgstr "" - -msgid "Smaller frames (smoother)" -msgstr "" - -msgid "Video:" -msgstr "Vídeo:" - -msgid "Video #2:" -msgstr "Vídeo 2:" - -msgid "Voodoo 1 or 2 Graphics" -msgstr "Gràfics Voodoo 1 o 2" - -msgid "IBM 8514/A Graphics" -msgstr "Gràfics IBM 8514/A" - -msgid "XGA Graphics" -msgstr "Gràfics XGA" - -msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" - -msgid "Keyboard:" -msgstr "" - -msgid "Keyboard" -msgstr "" - -msgid "Mouse:" -msgstr "Ratolí:" - -msgid "Mouse" -msgstr "" - -msgid "Joystick:" -msgstr "Joystick:" - -msgid "Joystick" -msgstr "" - -msgid "Joystick 1..." -msgstr "Joystick 1 ..." - -msgid "Joystick 2..." -msgstr "Joystick 2 ..." - -msgid "Joystick 3..." -msgstr "Joystick 3 ..." - -msgid "Joystick 4..." -msgstr "Joystick 4 ..." - -msgid "Sound card #1:" -msgstr "Targeta de so 1:" - -msgid "Sound card #2:" -msgstr "Targeta de so 2:" - -msgid "Sound card #3:" -msgstr "Targeta de so 3:" - -msgid "Sound card #4:" -msgstr "Targeta de so 4:" - -msgid "MIDI Out Device:" -msgstr "Dispositiu de sortida MIDI:" - -msgid "MIDI In Device:" -msgstr "Dispositiu d'entrada MIDI:" - -msgid "MIDI Out:" -msgstr "" - -msgid "Standalone MPU-401" -msgstr "MPU-401 autònom" - -msgid "Use FLOAT32 sound" -msgstr "Usar so FLOAT32" - -msgid "FM synth driver" -msgstr "Manejador de sintet. FM" - -msgid "Nuked (more accurate)" -msgstr "Nuked (més acurat)" - -msgid "YMFM (faster)" -msgstr "YMFM (més ràpid)" - -msgid "COM1 Device:" -msgstr "Dispositiu COM1:" - -msgid "COM2 Device:" -msgstr "Dispositiu COM2:" - -msgid "COM3 Device:" -msgstr "Dispositiu COM3:" - -msgid "COM4 Device:" -msgstr "Dispositiu COM4:" - -msgid "LPT1 Device:" -msgstr "Dispositiu LPT1:" - -msgid "LPT2 Device:" -msgstr "Dispositiu LPT2:" - -msgid "LPT3 Device:" -msgstr "Dispositiu LPT3:" - -msgid "LPT4 Device:" -msgstr "Dispositiu LPT4:" - -msgid "Serial port 1" -msgstr "Port sèrie 1" - -msgid "Serial port 2" -msgstr "Port sèrie 2" - -msgid "Serial port 3" -msgstr "Port sèrie 3" - -msgid "Serial port 4" -msgstr "Port sèrie 4" - -msgid "Parallel port 1" -msgstr "Port paral·lel 1" - -msgid "Parallel port 2" -msgstr "Port paral·lel 2" - -msgid "Parallel port 3" -msgstr "Port paral·lel 3" - -msgid "Parallel port 4" -msgstr "Port paral·lel 4" - -msgid "FD Controller:" -msgstr "Controlador de FD:" - -msgid "CD-ROM Controller:" -msgstr "" - -msgid "Tertiary IDE Controller" -msgstr "Controlador IDE terciari" - -msgid "Quaternary IDE Controller" -msgstr "Controlador IDE quaternari" - -msgid "Hard disk" -msgstr "" - -msgid "SCSI" -msgstr "SCSI" - -msgid "Controller 1:" -msgstr "Controlador 1:" - -msgid "Controller 2:" -msgstr "Controlador 2:" - -msgid "Controller 3:" -msgstr "Controlador 3:" - -msgid "Controller 4:" -msgstr "Controlador 4:" - -msgid "Cassette" -msgstr "Casset" - -msgid "Hard disks:" -msgstr "Discs durs:" - -msgid "Firmware Version" -msgstr "" - -msgid "&New..." -msgstr "&Nou ..." - -msgid "&Existing..." -msgstr "&Existent ..." - -msgid "&Remove" -msgstr "S&upressió" - -msgid "Bus:" -msgstr "Bus:" - -msgid "Channel:" -msgstr "Canal:" - -msgid "ID:" -msgstr "ID:" - -msgid "&Specify..." -msgstr "E&specificar ..." - -msgid "Sectors:" -msgstr "Sectors:" - -msgid "Heads:" -msgstr "Caps:" - -msgid "Cylinders:" -msgstr "Cilindres:" - -msgid "Size (MB):" -msgstr "Grandària (MB):" - -msgid "Type:" -msgstr "Tipus:" - -msgid "Image Format:" -msgstr "Format d'imatge:" - -msgid "Block Size:" -msgstr "Grandària del bloc:" - -msgid "Floppy drives:" -msgstr "Unitats de disquet:" - -msgid "Turbo timings" -msgstr "Temps turbo" - -msgid "Check BPB" -msgstr "Comprovar BPB" - -msgid "CD-ROM drives:" -msgstr "Unitats de CD-ROM:" - -msgid "MO drives:" -msgstr "Unitats MO:" - -msgid "MO:" -msgstr "" - -msgid "Removable disks:" -msgstr "" - -msgid "Removable disk drives:" -msgstr "" - -msgid "ZIP 250" -msgstr "ZIP 250" - -msgid "ISA RTC:" -msgstr "ISA RTC:" - -msgid "ISA Memory Expansion" -msgstr "Expansió de memòria ISA" - -msgid "ISA ROM Cards" -msgstr "" - -msgid "Card 1:" -msgstr "Targeta 1:" - -msgid "Card 2:" -msgstr "Targeta 2:" - -msgid "Card 3:" -msgstr "Targeta 3:" - -msgid "Card 4:" -msgstr "Targeta 4:" - -msgid "Generic ISA ROM Board" -msgstr "" - -msgid "Generic Dual ISA ROM Board" -msgstr "" - -msgid "Generic Quad ISA ROM Board" -msgstr "" - -msgid "ISABugger device" -msgstr "Dispositiu ISABugger" - -msgid "POST card" -msgstr "Targeta POST" - -msgid "86Box" -msgstr "86Box" - -msgid "Error" -msgstr "Error" - -msgid "Fatal error" -msgstr "Error fatal" - -msgid " - PAUSED" -msgstr " - EN PAUSA" - -msgid "Speed" -msgstr "Velocitat" - -msgid "Removable disk %1 (%2): %3" -msgstr "" - -msgid "&Removable disk %1 (%2): %3" -msgstr "" - -msgid "Removable disk images" -msgstr "" - -msgid "Image %1" -msgstr "" - -msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." -msgstr "86Box no ha pogut trobar cap imatge ROM utilitzable.\n\nSi us plau, descarregueu un conjunt de ROM i extreu-lo al directori \"roms\"." - -msgid "(empty)" -msgstr "(buit)" - -msgid "All files" -msgstr "Tots els fitxers" - -msgid "Turbo" -msgstr "Turbo" - -msgid "On" -msgstr "On" - -msgid "Off" -msgstr "Off" - -msgid "All images" -msgstr "Totes les imatges" - -msgid "Basic sector images" -msgstr "Imatges sectorials bàsiques" - -msgid "Surface images" -msgstr "Imatges superficials" - -msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "La màquina \"%hs\" no està disponible perquè falten ROM al directori roms/machines. Canvi a una màquina disponible." - -msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." -msgstr "La targeta de vídeo \"%hs\" no està disponible perquè falten ROM al directori roms/video. Canvi a una targeta de vídeo disponible." - -msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card." -msgstr "La targeta de vídeo 2 \"%hs\" no està disponible perquè falten ROM al directori roms/video. Deshabilitant la segona targeta de vídeo." - -msgid "Device \"%hs\" is not available due to missing ROMs. Ignoring the device." -msgstr "El dispositiu \"%hs\" no està disponible perquè falten ROM. Ignorant el dispositiu." - -msgid "Machine" -msgstr "Màquina" - -msgid "Display" -msgstr "Vídeo" - -msgid "Input devices" -msgstr "Dispositius d'entrada" - -msgid "Sound" -msgstr "So" - -msgid "Network" -msgstr "Xarxa" - -msgid "Ports (COM & LPT)" -msgstr "Ports (COM i LPT)" - -msgid "Ports" -msgstr "" - -msgid "Serial ports" -msgstr "" - -msgid "Parallel ports" -msgstr "" - -msgid "Storage controllers" -msgstr "Controladors d'emmagatzematge" - -msgid "Hard disks" -msgstr "Discs durs" - -msgid "Disks:" -msgstr "" - -msgid "Floppy:" -msgstr "" - -msgid "Controllers:" -msgstr "" - -msgid "Floppy & CD-ROM drives" -msgstr "Unitats de disquet i CD-ROM" - -msgid "Other removable devices" -msgstr "Altres dispositius extraïbles" - -msgid "Other peripherals" -msgstr "Altres perifèrics" - -msgid "Other devices" -msgstr "" - -msgid "Click to capture mouse" -msgstr "Feu clic per capturar el ratolí" - -msgid "Press %1 to release mouse" -msgstr "Premeu %1 per alliberar el ratolí" - -msgid "Press %1 or middle button to release mouse" -msgstr "Premeu %1 o el botó central per alliberar el ratolí" - -msgid "Bus" -msgstr "Bus" - -msgid "File" -msgstr "Fitxer" - -msgid "C" -msgstr "C" - -msgid "H" -msgstr "H" - -msgid "S" -msgstr "S" - -msgid "KB" -msgstr "KB" - -msgid "Default" -msgstr "Per defecte" - -msgid "%1 Wait state(s)" -msgstr "%1 estado(s) de Espera" - -msgid "Type" -msgstr "Tipus" - -msgid "No PCap devices found" -msgstr "No s'han trobat dispositius PCap" - -msgid "Invalid PCap device" -msgstr "El dispositiu PCap no és vàlid" - -msgid "2-axis, 2-button joystick(s)" -msgstr "Joystick(s) de 2 eixes, 2 botons" - -msgid "2-axis, 4-button joystick" -msgstr "Joystick de 2 eixes, 4 botons" - -msgid "2-axis, 6-button joystick" -msgstr "Joystick de 2 eixes, 6 botons" - -msgid "2-axis, 8-button joystick" -msgstr "Joystick de 2 eixes, 8 botons" - -msgid "3-axis, 2-button joystick" -msgstr "Joystick de 3 eixes, 2 botons" - -msgid "3-axis, 4-button joystick" -msgstr "Joystick de 3 eixes, 4 botons" - -msgid "4-axis, 4-button joystick" -msgstr "Joystick de 4 eixes, 4 botons" - -msgid "CH Flightstick Pro" -msgstr "CH Flightstick Pro" - -msgid "CH Flightstick Pro + CH Pedals" -msgstr "" - -msgid "Microsoft SideWinder Pad" -msgstr "Microsoft SideWinder Pad" - -msgid "Thrustmaster Flight Control System" -msgstr "Thrustmaster Flight Control System" - -msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" - -msgid "2-button gamepad(s)" -msgstr "" - -msgid "2-button flight yoke" -msgstr "" - -msgid "4-button gamepad" -msgstr "" - -msgid "4-button flight yoke" -msgstr "" - -msgid "2-button flight yoke with throttle" -msgstr "" - -msgid "4-button flight yoke with throttle" -msgstr "" - -msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" - -msgid "None" -msgstr "Cap" - -msgid "%1 MB (CHS: %2, %3, %4)" -msgstr "%1 MB (CHS: %2, %3, %4)" - -msgid "Floppy %1 (%2): %3" -msgstr "Disquet %1 (%2): %3" - -msgid "&Floppy %1 (%2): %3" -msgstr "&Disquet %1 (%2): %3" - -msgid "Advanced sector images" -msgstr "Imatges avançates del sector" - -msgid "Flux images" -msgstr "Imatges de flux" - -msgid "Are you sure you want to hard reset the emulated machine?" -msgstr "Esteu segur que voleu restablir la màquina emulada?" - -msgid "Are you sure you want to exit 86Box?" -msgstr "Esteu segur que voleu sortir de 86Box?" - -msgid "Unable to initialize Ghostscript" -msgstr "No es pot inicialitzar Ghostscript" - -msgid "Unable to initialize GhostPCL" -msgstr "No es pot inicialitzar GhostPCL" - -msgid "MO %1 (%2): %3" -msgstr "MO %1 (%2): %3" - -msgid "&MO %1 (%2): %3" -msgstr "&MO %1 (%2): %3" - -msgid "MO images" -msgstr "Imatges MO" - -msgid "Welcome to 86Box!" -msgstr "Benvingut a 86Box!" - -msgid "Internal device" -msgstr "Dispositiu intern" - -msgid "&File" -msgstr "" - -msgid "&New machine..." -msgstr "" - -msgid "&Check for updates..." -msgstr "" - -msgid "Exit" -msgstr "Sortir" - -msgid "No ROMs found" -msgstr "No s'ha trobat cap ROM" - -msgid "Do you want to save the settings?" -msgstr "Voleu desar les configuracions?" - -msgid "This will hard reset the emulated machine." -msgstr "Es farà una reinicialització completa de la màquina emulada." - -msgid "Save" -msgstr "Desar" - -msgid "About 86Box" -msgstr "Quant a 86Box" - -msgid "86Box v" -msgstr "86Box v" - -msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information." -msgstr "Un emulador d'ordinadors antics\n\nAutors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne i altres.\n\nAmb contribucions bàsiques anteriors de Sarah Walker, Leilei, JohnElliott, greatpsycho i altres.\n\nAlliberat sota la GNU General Public License versió 2 o posterior. Veure LLICENSE per a més informació." - -msgid "Hardware not available" -msgstr "Maquinari no disponible" - -msgid "Make sure %1 is installed and that you are on a %1-compatible network connection." -msgstr "Assegureu-vos que el %1 està instal·lat i que està en una connexió de xarxa compatible amb %1." - -msgid "Invalid configuration" -msgstr "Configuració invàlida" - -msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." -msgstr "%1 és necessària per a la conversió automàtica de fitxers PostScript a PDF.\n\nQualsevol document enviat a la impressora genèrica PostScript es desarà com a fitxer PostScript (.ps)." - -msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." -msgstr "%1 és necessària per a la conversió automàtica de fitxers PCL a PDF.\n\nQualsevol document enviat a la impressora genèrica PCL es desarà com a fitxer Printer Command Language (.pcl)." - -msgid "Don't show this message again" -msgstr "No mostreu més aquest missatge" - -msgid "Don't exit" -msgstr "No sortir" - -msgid "Reset" -msgstr "Resetejar" - -msgid "Don't reset" -msgstr "No resetejar" - -msgid "CD-ROM images" -msgstr "Imatges de CD-ROM" - -msgid "%1 Device Configuration" -msgstr "Configuració de Dispositiu %1" - -msgid "Monitor in sleep mode" -msgstr "Monitor en mode estalvi" - -msgid "GLSL shaders" -msgstr "Shaders GLSL" - -msgid "You are loading an unsupported configuration" -msgstr "S'està carregant una configuració no suportada" - -msgid "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid." -msgstr "El Filtratge de tipus de CPU basat en màquina seleccionada està deshabilitat per a aquesta màquina.\n\nAixò fa possible seleccionar una CPU que sigui incompatible amb aquesta màquina. Per això, poden aparèixer incompatibilitat amb la BIOS de la màquina o un altre programari.\n\nActivar aquest ajustament no està oficialment suportat i qualsevol informe de fallada pot ser tancat com a invàlid." - -msgid "Continue" -msgstr "Continuar" - -msgid "Cassette: %1" -msgstr "Casset: %1" - -msgid "C&assette: %1" -msgstr "C&asset: %1" - -msgid "Cassette images" -msgstr "Imatges de casset" - -msgid "Cartridge %1: %2" -msgstr "Cartutx %1: %2" - -msgid "Car&tridge %1: %2" -msgstr "Car&tutx %1: %2" - -msgid "Cartridge images" -msgstr "Imatges de cartutx" - -msgid "Resume execution" -msgstr "Reprendre l'execució" - -msgid "Pause execution" -msgstr "Pausar l'execució" - -msgid "Ctrl+Alt+Del" -msgstr "" - -msgid "Press Ctrl+Alt+Del" -msgstr "Pulsar Ctrl+Alt+Supr" - -msgid "Press Ctrl+Alt+Esc" -msgstr "Pulsar Ctrl+Alt+Esc" - -msgid "Hard reset" -msgstr "Reinicialització completa" - -msgid "Force shutdown" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Not running" -msgstr "" - -msgid "Running" -msgstr "" - -msgid "Paused" -msgstr "" - -msgid "Paused (Waiting)" -msgstr "" - -msgid "Powered Off" -msgstr "" - -msgid "waiting" -msgstr "" - -msgid "total" -msgstr "" - -msgid "System Directory:" -msgstr "" - -msgid "Choose directory" -msgstr "" - -msgid "Choose configuration file" -msgstr "" - -msgid "86Box configuration files (86box.cfg)" -msgstr "" - -msgid "Configuration read failed" -msgstr "" - -msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" - -msgid "Use regular expressions in search box" -msgstr "" - -msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" - -msgid "Add new system wizard" -msgstr "" - -msgid "Introduction" -msgstr "" - -msgid "This will help you add a new system to 86Box." -msgstr "" - -msgid "New configuration" -msgstr "" - -msgid "Complete" -msgstr "" - -msgid "The wizard will now launch the configuration for the new system." -msgstr "" - -msgid "Use existing configuration" -msgstr "" - -msgid "Type some notes here" -msgstr "" - -msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" - -msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" - -msgid "System name" -msgstr "" - -msgid "System name:" -msgstr "" - -msgid "System name cannot contain certain characters" -msgstr "" - -msgid "System name already exists" -msgstr "" - -msgid "Please enter a directory for the system" -msgstr "" - -msgid "Directory does not exist" -msgstr "" - -msgid "A new directory for the system will be created in the selected directory above" -msgstr "" - -msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" - -msgid "System name and location" -msgstr "" - -msgid "Enter the name of the system and choose the location" -msgstr "" - -msgid "Enter the name of the system" -msgstr "" - -msgid "Please enter a system name" -msgstr "" - -msgid "Display Name (optional)" -msgstr "" - -msgid "Display name:" -msgstr "" - -msgid "Set display name" -msgstr "" - -msgid "Enter the new display name (blank to reset)" -msgstr "" - -msgid "Change &display name..." -msgstr "" - -msgid "Context Menu" -msgstr "" - -msgid "&Open folder..." -msgstr "" - -msgid "Open &printer tray..." -msgstr "" - -msgid "Set &icon..." -msgstr "" - -msgid "Select an icon" -msgstr "" - -msgid "C&lone..." -msgstr "" - -msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" - -msgid "Directory %1 already exists" -msgstr "" - -msgid "You cannot use the following characters in the name: %1" -msgstr "" - -msgid "Clone" -msgstr "" - -msgid "Failed to create directory for cloned VM" -msgstr "" - -msgid "Failed to clone VM." -msgstr "" - -msgid "Directory in use" -msgstr "" - -msgid "The selected directory is already in use. Please select a different directory." -msgstr "" - -msgid "Create directory failed" -msgstr "" - -msgid "Unable to create the directory for the new system" -msgstr "" - -msgid "Configuration write failed" -msgstr "" - -msgid "Unable to open the configuration file at %1 for writing" -msgstr "" - -msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" - -msgid "Remove directory failed" -msgstr "" - -msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" - -msgid "Build" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "An update to 86Box is available!" -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "&Kill" -msgstr "" - -msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" - -msgid "&Delete" -msgstr "" - -msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" - -msgid "Show &config file" -msgstr "" - -msgid "No screenshot" -msgstr "" - -msgid "Search" -msgstr "" - -msgid "Searching for VMs..." -msgstr "" - -msgid "Found %1" -msgstr "" - -msgid "System" -msgstr "" - -msgid "Storage" -msgstr "" - -msgid "Disk %1: " -msgstr "" - -msgid "No disks" -msgstr "" - -msgid "Audio" -msgstr "" - -msgid "Audio:" -msgstr "" - -msgid "ACPI shutdown" -msgstr "Apagada ACPI" - -msgid "ACP&I shutdown" -msgstr "Apagada ACP&I" - -msgid "Hard disk (%1)" -msgstr "Disc dur (%1)" - -msgid "MFM/RLL or ESDI CD-ROM drives never existed" -msgstr "Les unitats de CD-ROM MFM/RLL o ESDI no van existir mai" - -msgid "Custom..." -msgstr "Personalitzat ..." - -msgid "Custom (large)..." -msgstr "Personalitzat (gran) ..." - -msgid "Add New Hard Disk" -msgstr "Afegir disc dur nou" - -msgid "Add Existing Hard Disk" -msgstr "Afegir disc dur existent" - -msgid "HDI disk images cannot be larger than 4 GB." -msgstr "Les imatges de disc HDI no poden superar els 4 GB." - -msgid "Disk images cannot be larger than 127 GB." -msgstr "Les imatges del disc no poden superar els 127 GB." - -msgid "Hard disk images" -msgstr "Imatges del disc dur" - -msgid "Unable to read file" -msgstr "No has estat possible llegir el fitxer" - -msgid "Unable to write file" -msgstr "No has estat possible escriure el fitxer" - -msgid "HDI or HDX images with a sector size other than 512 are not supported." -msgstr "Les imatges HDI o HDX amb una grandària de sector diferent de 512 no s'admeten." - -msgid "Disk image file already exists" -msgstr "El fitxer d'imatge de disc ja existeix" - -msgid "Please specify a valid file name." -msgstr "Especifiqueu un nom de fitxer vàlid." - -msgid "Disk image created" -msgstr "La imatge de disc ha estat creada" - -msgid "Make sure the file exists and is readable." -msgstr "Assegureu-vos que el fitxer existeix i és llegible." - -msgid "Make sure the file is being saved to a writable directory." -msgstr "Assegureu-vos que el fitxer s'està desant en un directori que es pugui escriure." - -msgid "Disk image too large" -msgstr "La imatge del disc és massa gran" - -msgid "Remember to partition and format the newly-created drive." -msgstr "Recordeu particionar i formatar la unitat de nova creació." - -msgid "The selected file will be overwritten. Are you sure you want to use it?" -msgstr "El fitxer seleccionat se sobreescriurà. Esteu segur que voleu utilitzar-lo?" - -msgid "Unsupported disk image" -msgstr "Imatge de disc no compatible" - -msgid "Overwrite" -msgstr "Sobreescriure" - -msgid "Don't overwrite" -msgstr "No sobreescriure" - -msgid "Raw image" -msgstr "Imatge crua" - -msgid "HDI image" -msgstr "Imatge HDI" - -msgid "HDX image" -msgstr "Imatge HDX" - -msgid "Fixed-size VHD" -msgstr "VHD de grandària fixa" - -msgid "Dynamic-size VHD" -msgstr "VHD de grandària dinàmica" - -msgid "Differencing VHD" -msgstr "VHD diferencial" - -msgid "(N/A)" -msgstr "(Cap)" - -msgid "Raw image (.img)" -msgstr "Imatge crua (.img)" - -msgid "HDI image (.hdi)" -msgstr "Imatge HDI (.hdi)" - -msgid "HDX image (.hdx)" -msgstr "Imatge HDX (.hdx)" - -msgid "Fixed-size VHD (.vhd)" -msgstr "VHD de grandària fixa (.vhd)" - -msgid "Dynamic-size VHD (.vhd)" -msgstr "VHD de grandària dinàmica (.vhd)" - -msgid "Differencing VHD (.vhd)" -msgstr "VHD diferencial (.vhd)" - -msgid "Large blocks (2 MB)" -msgstr "Blocs grans (2 MB)" - -msgid "Small blocks (512 KB)" -msgstr "Blocs petits (512 KB)" - -msgid "VHD files" -msgstr "Fitxers VHD" - -msgid "Select the parent VHD" -msgstr "Seleccioneu el VHD pare" - -msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "Això pot ser perquè la imatge pare es va modificar després que la imatge diferencial es creés.\n\nTambé pot passar si les imatges van ser mogudes o copiades, o per una fallada al programa que va crear aquest disc.\n\n¿ Voleu corregir els registres de temps?" - -msgid "Parent and child disk timestamps do not match" -msgstr "Les marques de temps del pare i el fill no coincideixen" - -msgid "Could not fix VHD timestamp." -msgstr "No has estat possible corregir la marca de temps del VHD." - -msgid "MFM/RLL" -msgstr "MFM/RLL" - -msgid "XTA" -msgstr "XTA" - -msgid "ESDI" -msgstr "ESDI" - -msgid "IDE" -msgstr "IDE" - -msgid "ATAPI" -msgstr "ATAPI" - -msgid "CD-ROM %1 (%2): %3" -msgstr "CD-ROM %1 (%2): %3" - -msgid "&CD-ROM %1 (%2): %3" -msgstr "&CD-ROM %1 (%2): %3" - -msgid "160 KB" -msgstr "160 KB" - -msgid "180 KB" -msgstr "180 KB" - -msgid "320 KB" -msgstr "320 KB" - -msgid "360 KB" -msgstr "360 KB" - -msgid "640 KB" -msgstr "640 KB" - -msgid "720 KB" -msgstr "720 KB" - -msgid "1.2 MB" -msgstr "1.2 MB" - -msgid "1.25 MB" -msgstr "1.25 MB" - -msgid "1.44 MB" -msgstr "1.44 MB" - -msgid "DMF (cluster 1024)" -msgstr "DMF (clúster 1024)" - -msgid "DMF (cluster 2048)" -msgstr "DMF (clúster 2048)" - -msgid "2.88 MB" -msgstr "2.88 MB" - -msgid "ZIP 100" -msgstr "ZIP 100" - -msgid "3.5\" 128 MB (ISO 10090)" -msgstr "3.5\" 128 MB (ISO 10090)" - -msgid "3.5\" 230 MB (ISO 13963)" -msgstr "3.5\" 230 MB (ISO 13963)" - -msgid "3.5\" 540 MB (ISO 15498)" -msgstr "3.5\" 540 MB (ISO 15498)" - -msgid "3.5\" 640 MB (ISO 15498)" -msgstr "3.5\" 640 MB (ISO 15498)" - -msgid "3.5\" 1.3 GB (GigaMO)" -msgstr "3.5\" 1.3 GB (GigaMO)" - -msgid "3.5\" 2.3 GB (GigaMO 2)" -msgstr "3.5\" 2.3 GB (GigaMO 2)" - -msgid "5.25\" 600 MB" -msgstr "5.25\" 600 MB" - -msgid "5.25\" 650 MB" -msgstr "5.25\" 650 MB" - -msgid "5.25\" 1 GB" -msgstr "5.25\" 1 GB" - -msgid "5.25\" 1.3 GB" -msgstr "5.25\" 1.3 GB" - -msgid "Perfect RPM" -msgstr "RPM perfectes" - -msgid "1% below perfect RPM" -msgstr "1% per sota de RPM perfectes" - -msgid "1.5% below perfect RPM" -msgstr "1.5% per sota de RPM perfectes" - -msgid "2% below perfect RPM" -msgstr "2% per sota de RPM perfectes" - -msgid "(System Default)" -msgstr "(Per defecte del sistema)" - -msgid "Failed to initialize network driver" -msgstr "No has estat possible inicialitzar el controlador de xarxa" - -msgid "The network configuration will be switched to the null driver" -msgstr "La configuració de la xarxa es canviarà al controlador nul" - -msgid "Mouse sensitivity:" -msgstr "Sensibilitat del ratolí:" - -msgid "Select media images from program working directory" -msgstr "Seleccioneu imatges multimèdia del directori de treball del programa" - -msgid "PIT mode:" -msgstr "Mode PIT:" - -msgid "Auto" -msgstr "Automàtic" - -msgid "Slow" -msgstr "Lent" - -msgid "Fast" -msgstr "Ràpid" - -msgid "&Auto-pause on focus loss" -msgstr "&Pausa automàtica en la pèrdua del focus" - -msgid "WinBox is no longer supported" -msgstr "Winbox ja no és compatible" - -msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "El desenvolupament del gerent de Winbox es va aturar el 2022 per falta de mantenidors. A mesura que dirigim els nostres esforços cap a la millora de 86Box, hem pres la decisió de deixar de donar suport a Winbox com a gerent.\n\nNo es proporcionaran més actualitzacions a través de Winbox i és possible que es trobi amb un comportament incorrecte si continueu utilitzant -lo amb versions més recents de 86Box. Qualsevol informe d'errors relacionat amb el comportament de WinBox es tancarà com a no vàlid.\n\nVés a 86box.net per obtenir una llista d’altres gestors que puguis utilitzar." - -msgid "Generate" -msgstr "Generar" - -msgid "Joystick configuration" -msgstr "Configuració del joystick" - -msgid "Device" -msgstr "Dispositiu" - -msgid "%1 (X axis)" -msgstr "%1 (eix X)" - -msgid "%1 (Y axis)" -msgstr "%1 (eix Y)" - -msgid "MCA devices" -msgstr "Dispositius MCA" - -msgid "List of MCA devices:" -msgstr "Lista de dispositius MCA:" - -msgid "&Tablet tool" -msgstr "Eina de tauleta" - -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - -msgid "About &Qt" -msgstr "Quant a &Qt" - -msgid "&MCA devices..." -msgstr "Dispositius MCA ..." - -msgid "Show non-&primary monitors" -msgstr "Mostrar monitors no primaris" - -msgid "Open screenshots &folder..." -msgstr "Obrir la carpeta de captures de pantalla ..." - -msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Apliqueu el mode d’estirament de pantalla completa en màxima" - -msgid "&Cursor/Puck" -msgstr "&Cursor/Puck" - -msgid "&Pen" -msgstr "&Ploma" - -msgid "&Host CD/DVD Drive (%1:)" -msgstr "&Unitat CD/DVD d'amfitrió (%1:)" - -msgid "&Connected" -msgstr "&Connectat" - -msgid "Clear image &history" -msgstr "Esborrar la &història de imatges" - -msgid "Create..." -msgstr "Crear ..." - -msgid "Host CD/DVD Drive (%1)" -msgstr "Unitat CD/DVD d'amfitrió (%1)" - -msgid "Unknown Bus" -msgstr "Bus desconegut" - -msgid "Null Driver" -msgstr "Controlador nul" - -msgid "NIC:" -msgstr "" - -msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" - -msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" - -msgid "Render behavior" -msgstr "Comportament del renderitzador" - -msgid "Use target framerate:" -msgstr "Utilitzeu el objectiu de la velocitat:" - -msgid " fps" -msgstr " fotogrames/s" - -msgid "VSync" -msgstr "VSync" - -msgid "Synchronize with video" -msgstr "Sincronitzar amb vídeo" - -msgid "Shaders" -msgstr "Shaders" - -msgid "Remove" -msgstr "Supressió" - -msgid "Browse..." -msgstr "Navegació..." - -msgid "Couldn't create OpenGL context." -msgstr "No has estat possible crear un context d'OpenGL." - -msgid "Couldn't switch to OpenGL context." -msgstr "No has estat possible canviar al context d'OpenGL." - -msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" -msgstr "Es requereix la versió 3.0 o superior d'OpenGL. La versió actual és %1.%2" - -msgid "Error initializing OpenGL" -msgstr "Error en inicialitzar OpenGL" - -msgid "\nFalling back to software rendering." -msgstr "\nTornant al renderitzador software." - -msgid "

When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.

" -msgstr "

Quan seleccioneu imatges de suports (CD-ROM, disquet, etc.), el diàleg obert s’iniciarà al mateix directori que el fitxer de configuració 86Box. Aquesta configuració només farà una diferència en les macOS.

" - -msgid "This machine might have been moved or copied." -msgstr "Aquesta màquina podria haver estat moguda o copiada." - -msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." -msgstr "Per tal d’assegurar una funcionalitat adequada de xarxa, 86box ha de saber si aquesta màquina es va moure o copiar.\n\nSeleccioneu \"Ho he copiat\" si no esteu segurs." - -msgid "I Moved It" -msgstr "Ho vaig moure" - -msgid "I Copied It" -msgstr "Ho he copiat" - -msgid "86Box Monitor #" -msgstr "Monitor de 86Box " - -msgid "No MCA devices." -msgstr "No s'han trobat dispositius MCA." - -msgid "MiB" -msgstr "MiB" - -msgid "GiB" -msgstr "" - -msgid "Network Card #1" -msgstr "Targeta de xarxa 1" - -msgid "Network Card #2" -msgstr "Targeta de xarxa 2" - -msgid "Network Card #3" -msgstr "Targeta de xarxa 3" - -msgid "Network Card #4" -msgstr "Targeta de xarxa 4" - -msgid "Mode:" -msgstr "Mode:" - -msgid "Interface:" -msgstr "Interfície:" - -msgid "Adapter:" -msgstr "Adaptador:" - -msgid "VDE Socket:" -msgstr "Socket de VDE:" - -msgid "86Box Unit Tester" -msgstr "Test de la unitat de 86 Box" - -msgid "Novell NetWare 2.x Key Card" -msgstr "Targeta de clau de Novell Netware 2.x" - -msgid "Serial port passthrough 1" -msgstr "Pas del port sèrie 1" - -msgid "Serial port passthrough 2" -msgstr "Pas del port sèrie 2" - -msgid "Serial port passthrough 3" -msgstr "Pas del port sèrie 3" - -msgid "Serial port passthrough 4" -msgstr "Pas del port sèrie 4" - -msgid "Renderer &options..." -msgstr "Opcions del renderitzador ..." - -msgid "PC/XT Keyboard" -msgstr "" - -msgid "AT Keyboard" -msgstr "" - -msgid "AX Keyboard" -msgstr "" - -msgid "PS/2 Keyboard" -msgstr "" - -msgid "PS/55 Keyboard" -msgstr "" - -msgid "Keys" -msgstr "" - -msgid "Logitech/Microsoft Bus Mouse" -msgstr "Ratolí bus Logitech/Microsoft" - -msgid "Microsoft Bus Mouse (InPort)" -msgstr "Ratolí bus Microsoft (InPort)" - -msgid "Mouse Systems Serial Mouse" -msgstr "Ratolí sèrie Mouse Systems" - -msgid "Mouse Systems Bus Mouse" -msgstr "" - -msgid "Microsoft Serial Mouse" -msgstr "Ratolí sèrie Microsoft" - -msgid "Microsoft Serial BallPoint" -msgstr "" - -msgid "Logitech Serial Mouse" -msgstr "Ratolí sèrie Logitech" - -msgid "PS/2 Mouse" -msgstr "Ratolí PS/2" - -msgid "PS/2 QuickPort Mouse" -msgstr "" - -msgid "3M MicroTouch (Serial)" -msgstr "3M MicroTouch (sèrie)" - -msgid "Default Baud rate" -msgstr "" - -msgid "[COM] Standard Hayes-compliant Modem" -msgstr "[COM] Mòdem estàndard, complint els Hayes" - -msgid "Roland MT-32 Emulation" -msgstr "Emulació de Roland MT-32" - -msgid "Roland MT-32 (New) Emulation" -msgstr "Emulació de Roland MT-32 (nou)" - -msgid "Roland CM-32L Emulation" -msgstr "Emulació de Roland CM-32L" - -msgid "Roland CM-32LN Emulation" -msgstr "Emulació de Roland CM-32LN" - -msgid "OPL4-ML Daughterboard" -msgstr "Placa filla OPL4-ML" - -msgid "System MIDI" -msgstr "MIDI de sistema" - -msgid "MIDI Input Device" -msgstr "Dispositiu d'entrada MIDI" - -msgid "BIOS file" -msgstr "" - -msgid "BIOS file (ROM #1)" -msgstr "" - -msgid "BIOS file (ROM #2)" -msgstr "" - -msgid "BIOS file (ROM #3)" -msgstr "" - -msgid "BIOS file (ROM #4)" -msgstr "" - -msgid "BIOS address" -msgstr "Adreça de BIOS" - -msgid "BIOS address (ROM #1)" -msgstr "" - -msgid "BIOS address (ROM #2)" -msgstr "" - -msgid "BIOS address (ROM #3)" -msgstr "" - -msgid "BIOS address (ROM #4)" -msgstr "" - -msgid "Enable BIOS extension ROM Writes" -msgstr "Activar les escrits a la ROM extensor de BIOS" - -msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" - -msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" - -msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" - -msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" - -msgid "Linear framebuffer base" -msgstr "" - -msgid "Address" -msgstr "Adreça" - -msgid "IRQ" -msgstr "IRQ" - -msgid "Serial port IRQ" -msgstr "" - -msgid "Parallel port IRQ" -msgstr "" - -msgid "BIOS Revision" -msgstr "Revisió de la BIOS" - -msgid "BIOS Version" -msgstr "" - -msgid "BIOS Language" -msgstr "" - -msgid "IBM 5161 Expansion Unit" -msgstr "" - -msgid "IBM Cassette Basic" -msgstr "" - -msgid "Translate 26 -> 17" -msgstr "Traduir 26 -> 17" - -msgid "Language" -msgstr "Idioma" - -msgid "Enable backlight" -msgstr "Activar la llum posterior" - -msgid "Invert colors" -msgstr "Colors invertits" - -msgid "BIOS size" -msgstr "Grandària de la BIOS" - -msgid "BIOS size (ROM #1)" -msgstr "" - -msgid "BIOS size (ROM #2)" -msgstr "" - -msgid "BIOS size (ROM #3)" -msgstr "" - -msgid "BIOS size (ROM #4)" -msgstr "" - -msgid "Map C0000-C7FFF as UMB" -msgstr "Mapa C0000-C7FFF com UMB" - -msgid "Map C8000-CFFFF as UMB" -msgstr "Mapa C8000-CFFFF com UMB" - -msgid "Map D0000-D7FFF as UMB" -msgstr "Mapa D0000-D7FFF com UMB" - -msgid "Map D8000-DFFFF as UMB" -msgstr "Mapa D8000-DFFFF com UMB" - -msgid "Map E0000-E7FFF as UMB" -msgstr "Mapa E0000-E7FFF com UMB" - -msgid "Map E8000-EFFFF as UMB" -msgstr "Mapa E8000-EFFFF com UMB" - -msgid "JS9 Jumper (JIM)" -msgstr "Jumper JS9 (JIM)" - -msgid "MIDI Output Device" -msgstr "Dispositiu de sortida MIDI" - -msgid "MIDI Real time" -msgstr "MIDI en temps real" - -msgid "MIDI Thru" -msgstr "Pas de l’entrada MIDI" - -msgid "MIDI Clockout" -msgstr "Rellotge MIDI" - -msgid "SoundFont" -msgstr "SoundFont" - -msgid "Output Gain" -msgstr "Guany de sortida" - -msgid "Chorus" -msgstr "Cor" - -msgid "Chorus Voices" -msgstr "Veus de cor" - -msgid "Chorus Level" -msgstr "Nivell de cor" - -msgid "Chorus Speed" -msgstr "Velocitat del cor" - -msgid "Chorus Depth" -msgstr "Profunditat de cor" - -msgid "Chorus Waveform" -msgstr "Forma d'ona del cor" - -msgid "Reverb" -msgstr "Reverberació" - -msgid "Reverb Room Size" -msgstr "Grandària del loc de reveberació" - -msgid "Reverb Damping" -msgstr "Amortiment de reverberació" - -msgid "Reverb Width" -msgstr "Amplada de reverberació" - -msgid "Reverb Level" -msgstr "Nivell de reverberació" - -msgid "Interpolation Method" -msgstr "Mètode d'interpolació" - -msgid "Dynamic Sample Loading" -msgstr "" - -msgid "Reverb Output Gain" -msgstr "Guany de sortida de reverberació" - -msgid "Reversed stereo" -msgstr "Estèreo invertit" - -msgid "Nice ramp" -msgstr "Rampa bonica" - -msgid "Hz" -msgstr "Hz" - -msgid "Buttons" -msgstr "Botons" - -msgid "Serial Port" -msgstr "Port sèrie" - -msgid "RTS toggle" -msgstr "Commutació RTS" - -msgid "Revision" -msgstr "Revisió" - -msgid "Controller" -msgstr "Controlador" - -msgid "Show Crosshair" -msgstr "Mostra el cursor de creuers" - -msgid "DMA" -msgstr "DMA" - -msgid "MAC Address" -msgstr "Adreça MAC" - -msgid "MAC Address OUI" -msgstr "OUI de adreça MAC" - -msgid "Enable BIOS" -msgstr "Activar BIOS" - -msgid "Baud Rate" -msgstr "Taxa de baud" - -msgid "TCP/IP listening port" -msgstr "Port d'escolta TCP/IP" - -msgid "Phonebook File" -msgstr "Arxiu de la llibreta de telèfon" - -msgid "Telnet emulation" -msgstr "Emulació de telnet" - -msgid "RAM Address" -msgstr "Adreça de RAM" - -msgid "RAM size" -msgstr "Grandària de RAM" - -msgid "Initial RAM size" -msgstr "Grandària inicial de RAMu" - -msgid "Serial Number" -msgstr "Número de sèrie" - -msgid "Host ID" -msgstr "Identificador d'amfitrió" - -msgid "FDC Address" -msgstr "Adreça del FDC" - -msgid "MPU-401 Address" -msgstr "Adreça del MPU-401" - -msgid "MPU-401 IRQ" -msgstr "IRQ MPU-401" - -msgid "Receive MIDI input" -msgstr "Rebre l'entrada MIDI" - -msgid "Low DMA" -msgstr "DMA baix" - -msgid "Enable Game port" -msgstr "Activar port de joc" - -msgid "SID Model" -msgstr "" - -msgid "SID Filter Strength" -msgstr "" - -msgid "Surround module" -msgstr "Mòdul Surround" - -msgid "CODEC" -msgstr "CODEC" - -msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" -msgstr "Activar la interrupció del codec en la configuració del CODEC (necessari per alguns controladors)" - -msgid "SB Address" -msgstr "Adreça de SB" - -msgid "Adlib Address" -msgstr "" - -msgid "Use EEPROM setting" -msgstr "" - -msgid "WSS IRQ" -msgstr "IRQ de WSS" - -msgid "WSS DMA" -msgstr "DMA de WSS" - -msgid "Enable OPL" -msgstr "Activar OPL" - -msgid "Receive MIDI input (MPU-401)" -msgstr "Rebre l'entrada MIDI (MPU-401)" - -msgid "SB low DMA" -msgstr "DMA baix del SB" - -msgid "6CH variant (6-channel)" -msgstr "Variant de 6Ch (6 canals)" - -msgid "Enable CMS" -msgstr "Activar CMS" - -msgid "Mixer" -msgstr "Mescadora" - -msgid "High DMA" -msgstr "DMA alt" - -msgid "Control PC speaker" -msgstr "Controlar l'altaveu del PC" - -msgid "Memory size" -msgstr "Grandària de memòria" - -msgid "EMU8000 Address" -msgstr "Adreça de EMU8000" - -msgid "IDE Controller" -msgstr "Controlador IDE" - -msgid "Codec" -msgstr "Codec" - -msgid "GUS type" -msgstr "Tipus de GUS" - -msgid "Enable 0x04 \"Exit 86Box\" command" -msgstr "Activar comanda 0x04 \"Sortir de 86Box\"" - -msgid "Display type" -msgstr "Tipus de pantalla" - -msgid "Composite type" -msgstr "Tipus de pantalla composta" - -msgid "RGB type" -msgstr "Tipus de pantalla RGB" - -msgid "Line doubling type" -msgstr "Tipus de doblatge de línia" - -msgid "Snow emulation" -msgstr "Emulació de neu" - -msgid "Monitor type" -msgstr "Tipus de moitor" - -msgid "Character set" -msgstr "Conjunt de caràcters" - -msgid "XGA type" -msgstr "Tipus de XGA" - -msgid "Instance" -msgstr "Instància" - -msgid "MMIO Address" -msgstr "Adreça de MMIO" - -msgid "RAMDAC type" -msgstr "Tipus de RAMDAC" - -msgid "Blend" -msgstr "Barrejar" - -msgid "Font" -msgstr "" - -msgid "Bilinear filtering" -msgstr "Filtratge bilineal" - -msgid "Video chroma-keying" -msgstr "" - -msgid "Dithering" -msgstr "Dithering" - -msgid "Enable NMI for CGA emulation" -msgstr "Activar NMI per a emulació CGA" - -msgid "Voodoo type" -msgstr "Tipus de targeta Voodoo" - -msgid "Framebuffer memory size" -msgstr "Grandària de memòria framebuffer" - -msgid "Texture memory size" -msgstr "Grandària de memòria de textura" - -msgid "Dither subtraction" -msgstr "Sibtracció de dither" - -msgid "Screen Filter" -msgstr "Filtre de pantalla" - -msgid "Render threads" -msgstr "Fils de renderització" - -msgid "SLI" -msgstr "SLI" - -msgid "Start Address" -msgstr "Adreça inicial" - -msgid "Contiguous Size" -msgstr "Grandària contigua" - -msgid "I/O Width" -msgstr "Amplada de E/S" - -msgid "Transfer Speed" -msgstr "Velocitat de transferència" - -msgid "EMS mode" -msgstr "Mode EMS" - -msgid "EMS Address" -msgstr "" - -msgid "EMS 1 Address" -msgstr "" - -msgid "EMS 2 Address" -msgstr "" - -msgid "EMS Memory Size" -msgstr "" - -msgid "EMS 1 Memory Size" -msgstr "" - -msgid "EMS 2 Memory Size" -msgstr "" - -msgid "Enable EMS" -msgstr "" - -msgid "Enable EMS 1" -msgstr "" - -msgid "Enable EMS 2" -msgstr "" - -msgid "Address for > 2 MB" -msgstr "Adreça per a > 2 MB" - -msgid "Frame Address" -msgstr "Adreça de marc" - -msgid "USA" -msgstr "Estats Units" - -msgid "Danish" -msgstr "Danès" - -msgid "Always at selected speed" -msgstr "Sempre a la velocitat seleccionada" - -msgid "BIOS setting + Hotkeys (off during POST)" -msgstr "Configuració de la BIOS + Hotkeys (desactivat durant el POST)" - -msgid "64 KB starting from F0000" -msgstr "64 KB a partir de F0000" - -msgid "128 KB starting from E0000 (address MSB inverted, last 64 KB first)" -msgstr "128 KB a partir de E0000 (MSB de adreça invertit, els darrers 64 KB primer)" - -msgid "Sine" -msgstr "Sinusoidal" - -msgid "Triangle" -msgstr "Triangular" - -msgid "Linear" -msgstr "Lineal" - -msgid "4th Order" -msgstr "Del 4t ordre" - -msgid "7th Order" -msgstr "Del 7è ordre" - -msgid "Non-timed (original)" -msgstr "No cronometrat (original)" - -msgid "45 Hz (JMP2 not populated)" -msgstr "45 Hz (JMP2 no poblat)" - -msgid "Two" -msgstr "Dos" - -msgid "Three" -msgstr "Tres" - -msgid "Wheel" -msgstr "Roda" - -msgid "Five + Wheel" -msgstr "Cinc + roda" - -msgid "Five + 2 Wheels" -msgstr "" - -msgid "A3 - SMT2 Serial / SMT3(R)V" -msgstr "A3 - SMT2 sèrie / SMT3(R)V" - -msgid "Q1 - SMT3(R) Serial" -msgstr "Q1 - SMT3(R) sèrie" - -msgid "8 KB" -msgstr "8 KB" - -msgid "32 KB" -msgstr "32 KB" - -msgid "16 KB" -msgstr "16 KB" - -msgid "64 KB" -msgstr "64 KB" - -msgid "Disable BIOS" -msgstr "Desactivar la BIOS" - -msgid "512 KB" -msgstr "512 KB" - -msgid "2 MB" -msgstr "2 MB" - -msgid "8 MB" -msgstr "8 MB" - -msgid "28 MB" -msgstr "28 MB" - -msgid "1 MB" -msgstr "1 MB" - -msgid "4 MB" -msgstr "4 MB" - -msgid "12 MB" -msgstr "12 MB" - -msgid "16 MB" -msgstr "16 MB" - -msgid "20 MB" -msgstr "20 MB" - -msgid "24 MB" -msgstr "24 MB" - -msgid "SigmaTel STAC9721T (stereo)" -msgstr "SigmaTel STAC9721T (estèreo)" - -msgid "Classic" -msgstr "Clàssic" - -msgid "256 KB" -msgstr "256 KB" - -msgid "Composite" -msgstr "Compost" - -msgid "Old" -msgstr "Vella" - -msgid "New" -msgstr "Nova" - -msgid "Color (generic)" -msgstr "Color (genèric)" - -msgid "Green Monochrome" -msgstr "Moncorom verd" - -msgid "Amber Monochrome" -msgstr "Monocrom ambre" - -msgid "Gray Monochrome" -msgstr "Monocrom gris" - -msgid "Color (no brown)" -msgstr "Color (sense marró)" - -msgid "Color (IBM 5153)" -msgstr "Color (IBM 5153)" - -msgid "Simple doubling" -msgstr "Doble simple" - -msgid "sRGB interpolation" -msgstr "Interpolació sRGB" - -msgid "Linear interpolation" -msgstr "Interpolació lineal" - -msgid "Has secondary 8x8 character set" -msgstr "" - -msgid "Has Quadcolor II daughter board" -msgstr "" - -msgid "Alternate monochrome contrast" -msgstr "" - -msgid "128 KB" -msgstr "128 KB" - -msgid "Monochrome (5151/MDA) (white)" -msgstr "Monocrom (5151/MDA) (blanc)" - -msgid "Monochrome (5151/MDA) (green)" -msgstr "Monocrom (5151/MDA) (verd)" - -msgid "Monochrome (5151/MDA) (amber)" -msgstr "Monocrom (5151/MDA) (ambre)" - -msgid "Color 40x25 (5153/CGA)" -msgstr "Color 40x25 (5153/CGA)" - -msgid "Color 80x25 (5153/CGA)" -msgstr "Color 80x25 (5153/CGA)" - -msgid "Enhanced Color - Normal Mode (5154/ECD)" -msgstr "Color millorat - mode normal (5154/ECD)" - -msgid "Enhanced Color - Enhanced Mode (5154/ECD)" -msgstr "Color millorat - mode millorat (5154/ECD)" - -msgid "Green" -msgstr "Verd" - -msgid "Amber" -msgstr "Ambre" - -msgid "Gray" -msgstr "Gris" - -msgid "Grayscale" -msgstr "" - -msgid "Color" -msgstr "Color" - -msgid "U.S. English" -msgstr "Anglès dels EUA" - -msgid "Scandinavian" -msgstr "Escandinau" - -msgid "Other languages" -msgstr "Altres idiomes" - -msgid "Bochs latest" -msgstr "Bochs més recent" - -msgid "Apply overscan deltas" -msgstr "" - -msgid "Mono Interlaced" -msgstr "" - -msgid "Mono Non-Interlaced" -msgstr "Monocrom no interlat" - -msgid "Color Interlaced" -msgstr "Color interlat" - -msgid "Color Non-Interlaced" -msgstr "Color no interlat" - -msgid "3Dfx Voodoo Graphics" -msgstr "Gràfics 3dfx Voodoo" - -msgid "3Dfx Voodoo 2" -msgstr "" - -msgid "Obsidian SB50 + Amethyst (2 TMUs)" -msgstr "Obsidian SB50 + Amethyst (2 unitats TMU)" - -msgid "8-bit" -msgstr "8 bits" - -msgid "16-bit" -msgstr "16 bits" - -msgid "Standard (150ns)" -msgstr "Estàndard (150ns)" - -msgid "High-Speed (120ns)" -msgstr "Alta velocitat (120ns)" - -msgid "Enabled" -msgstr "Activada" - -msgid "Standard" -msgstr "Estàndard" - -msgid "High-Speed" -msgstr "Alta velocitat" - -msgid "Stereo LPT DAC" -msgstr "DAC LPT estèreo" - -msgid "Generic Text Printer" -msgstr "Impressora de text genèrica" - -msgid "Generic ESC/P Dot-Matrix Printer" -msgstr "Impressora de matriu de punts ESC/P genèrica" - -msgid "Generic PostScript Printer" -msgstr "Impressora PostScript genèrica" - -msgid "Generic PCL5e Printer" -msgstr "Impressora PCL5e genèrica" - -msgid "Parallel Line Internet Protocol" -msgstr "Protocol d'Internet de línia paraŀlela" - -msgid "Protection Dongle for Savage Quest" -msgstr "Dispositiu de protecció per a Savage Quest" - -msgid "Serial Passthrough Device" -msgstr "Dispositiu de pas de sèrie" - -msgid "Passthrough Mode" -msgstr "Mode de pas" - -msgid "Host Serial Device" -msgstr "Dispositiu de sèrie amfitrió" - -msgid "Name of pipe" -msgstr "Nom de la canonada" - -msgid "Data bits" -msgstr "Bits de dades" - -msgid "Stop bits" -msgstr "Bits de aturada" - -msgid "Baud Rate of Passthrough" -msgstr "Taxa de baud de pas" - -msgid "Named Pipe (Server)" -msgstr "Pipe anomenat (servidor)" - -msgid "Named Pipe (Client)" -msgstr "" - -msgid "Host Serial Passthrough" -msgstr "Pas del port sèrie amfitrió" - -msgid "E&ject %1" -msgstr "E&xtreure %1" - -msgid "&Unmute" -msgstr "&Saver" - -msgid "Softfloat FPU" -msgstr "FPU Softfloat" - -msgid "High performance impact" -msgstr "Alt impact en el rendiment" - -msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Disc RAM (velocitat màxima)" - -msgid "[Generic] 1989 (3500 RPM)" -msgstr "" - -msgid "[Generic] 1992 (3600 RPM)" -msgstr "" - -msgid "[Generic] 1994 (4500 RPM)" -msgstr "" - -msgid "[Generic] 1996 (5400 RPM)" -msgstr "" - -msgid "[Generic] 1997 (5400 RPM)" -msgstr "" - -msgid "[Generic] 1998 (5400 RPM)" -msgstr "" - -msgid "[Generic] 2000 (7200 RPM)" -msgstr "" - -msgid "IBM 8514/A clone (ISA)" -msgstr "Clon IBM 8514/A (ISA)" - -msgid "Vendor" -msgstr "Frabricant" - -msgid "30 Hz (JMP2 = 1)" -msgstr "" - -msgid "60 Hz (JMP2 = 2)" -msgstr "" - -msgid "Generic PC/XT Memory Expansion" -msgstr "Expansió de memòria genèrica PC/XT" - -msgid "Generic PC/AT Memory Expansion" -msgstr "Expansió de memòria genèrica PC/AT" - -msgid "Unable to find Dot-Matrix fonts" -msgstr "No es pot trobar tipus de lletra de matriu de punts" - -msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer." -msgstr "Els tipus de lletra TrueType al directori \"roms/printer/fonts\" són necessaris per a l'emulació de la impressora de matriu de punts ESC/P genèrica." - -msgid "Inhibit multimedia keys" -msgstr "" - -msgid "Ask for confirmation before saving settings" -msgstr "" - -msgid "Ask for confirmation before hard resetting" -msgstr "" - -msgid "Ask for confirmation before quitting" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Model:" -msgstr "" - -msgid "Failed to initialize Vulkan renderer." -msgstr "" - -msgid "GLSL Error" -msgstr "" - -msgid "Could not load shader: %1" -msgstr "" - -msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" - -msgid "Could not load texture: %1" -msgstr "" - -msgid "Could not compile shader:\n\n%1" -msgstr "" - -msgid "Program not linked:\n\n%1" -msgstr "" - -msgid "Shader Manager" -msgstr "" - -msgid "Shader Configuration" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Could not load file %1" -msgstr "" - -msgid "Key Bindings:" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Keybind" -msgstr "" - -msgid "Clear binding" -msgstr "" - -msgid "Bind" -msgstr "" - -msgid "Bind Key" -msgstr "" - -msgid "Enter key combo:" -msgstr "" - -msgid "Bind conflict" -msgstr "" - -msgid "This key combo is already in use." -msgstr "" - -msgid "Send Control+Alt+Del" -msgstr "" - -msgid "Send Control+Alt+Escape" -msgstr "" - -msgid "Toggle fullscreen" -msgstr "" - -msgid "Screenshot" -msgstr "" - -msgid "Release mouse pointer" -msgstr "" - -msgid "Toggle pause" -msgstr "" - -msgid "Toggle mute" -msgstr "" - -msgid "Text files" -msgstr "" - -msgid "ROM files" -msgstr "" - -msgid "SoundFont files" -msgstr "" - -msgid "Local Switch" -msgstr "" - -msgid "Remote Switch" -msgstr "" - -msgid "Switch:" -msgstr "" - -msgid "Hub Mode" -msgstr "" - -msgid "Hostname:" -msgstr "" - -msgid "ISA RTC" -msgstr "" - -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" - -msgid "&Wipe NVRAM" -msgstr "" - -msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" - -msgid "Success" -msgstr "" - -msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" - -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" - -msgid "%1 VM Manager" -msgstr "" - -msgid "%n disk(s)" -msgstr "" - -msgid "Unknown Status" -msgstr "" - -msgid "No Machines Found!" -msgstr "" - -msgid "Check for updates on startup" -msgstr "" - -msgid "Unable to determine release information" -msgstr "" - -msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" - -msgid "Update check complete" -msgstr "" - -msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" - -msgid "version" -msgstr "" - -msgid "build" -msgstr "" - -msgid "You are currently running %1 %2. " -msgstr "" - -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" - -msgid "Visit download page" -msgstr "" - -msgid "Update check" -msgstr "" - -msgid "Checking for updates.." -msgstr "" - -msgid "86Box Update" -msgstr "" - -msgid "Release notes:" -msgstr "" - -#~ msgid "HD Controller:" -#~ msgstr "Controlador de HD:" - -#~ msgid "ZIP drives:" -#~ msgstr "Unitats ZIP:" - -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" - -#~ msgid "ZIP images" -#~ msgstr "Imatges ZIP" diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po index b8184562f..a0a072866 100644 --- a/src/qt/languages/cs-CZ.po +++ b/src/qt/languages/cs-CZ.po @@ -10,7 +10,7 @@ msgid "&Action" msgstr "&Akce" msgid "&Keyboard requires capture" -msgstr "&Klávesnice vyžaduje záběr" +msgstr "&Klávesnice vyžaduje záběr myši" msgid "&Right CTRL is left ALT" msgstr "&Pravý Ctrl je levý Alt" @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "P&ozastavit" msgid "Pause" -msgstr "" +msgstr "Pozastavit" msgid "Re&sume" -msgstr "" +msgstr "&Obnovit" msgid "E&xit" msgstr "&Ukončit" @@ -57,9 +57,6 @@ msgstr "&Renderer" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Zadat velikost..." -msgid "F&orce 4:3 display ratio" -msgstr "&Dodržovat poměr stran 4:3" +msgid "Force &4:3 display ratio" +msgstr "Dodržovat poměr stran &4:3" msgid "&Window scale factor" msgstr "&Násobek zvětšení okna" @@ -138,8 +135,8 @@ msgstr "&Celočíselné škálování" msgid "4:&3 Integer scale" msgstr "4:&3 Celočíselné škálování" -msgid "E&GA/(S)VGA settings" -msgstr "Nastavení pro E&GA a (S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Nastavení pro EGA a (S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Převrátit barvy" @@ -151,22 +148,22 @@ msgid "RGB &Color" msgstr "RGB &barevný" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (bez hnědé)" msgid "&RGB Grayscale" msgstr "&Odstíny šedi" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Obecný RGBI barevný monitor" msgid "&Amber monitor" -msgstr "&Jantarová obrazovka" +msgstr "&Jantarový monitor" msgid "&Green monitor" -msgstr "&Zelená obrazovka" +msgstr "&Zelený monitor" msgid "&White monitor" -msgstr "&Bílá obrazovka" +msgstr "&Bílý monitor" msgid "Grayscale &conversion type" msgstr "Převod na &odstíny šedi" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Nastavení..." msgid "Settings..." -msgstr "" +msgstr "Nastavení..." msgid "&Update status bar icons" msgstr "&Aktualizovat ikony stavového řádku" @@ -364,10 +361,10 @@ msgid "Configure" msgstr "Nastavit" msgid "CPU:" -msgstr "" +msgstr "Procesor:" msgid "CPU type:" -msgstr "Procesor:" +msgstr "Typ procesoru:" msgid "Speed:" msgstr "Rychlost:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Dynamický překladač" msgid "CPU frame size" -msgstr "" +msgstr "Velikost CPU rámců" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Větší rámce (méně plynulé)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Menší rámce (plynulejší)" msgid "Video:" msgstr "Grafika:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Grafika XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Grafika zobrazovacího adaptéru IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Klávesnice:" msgid "Keyboard" -msgstr "" +msgstr "Klávesnice" msgid "Mouse:" msgstr "Myš:" msgid "Mouse" -msgstr "" +msgstr "Myš" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -472,13 +469,13 @@ msgid "Sound card #4:" msgstr "Zvuková karta 4:" msgid "MIDI Out Device:" -msgstr "MIDI výstup:" +msgstr "Zařízení pro MIDI výstup:" msgid "MIDI In Device:" -msgstr "MIDI vstup:" +msgstr "Zařízení pro MIDI vstup:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI výstup:" msgid "Standalone MPU-401" msgstr "Samostatný MPU-401" @@ -519,6 +516,9 @@ msgstr "Zařízení na LPT3:" msgid "LPT4 Device:" msgstr "Zařízení na LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA kanál ECP interního LPT portu:" + msgid "Serial port 1" msgstr "Povolit port COM1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Disketový řadič:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Řadič CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Třetí řadič IDE" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Čtvrtý řadič IDE" msgid "Hard disk" -msgstr "" +msgstr "Pevný disk" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Pevné disky:" msgid "Firmware Version" -msgstr "" +msgstr "Verze firmware" msgid "&New..." msgstr "&Nový..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Magnetooptické mechaniky:" msgid "MO:" -msgstr "" +msgstr "Magnetooptické jednotky:" msgid "Removable disks:" -msgstr "" +msgstr "Vyměnitelné disky:" msgid "Removable disk drives:" -msgstr "" +msgstr "Mechaniky vyměnitelných disků:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA rozšíření paměti" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA karty s pamětí ROM" msgid "Card 1:" msgstr "Karta 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Karta 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Obecná ISA karta s pamětí ROM" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Obecná ISA karta se dvěmi pamětmi ROM" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Obecná ISA karta se čtyřmi pamětmi ROM" msgid "ISABugger device" msgstr "Zařízení ISABugger" @@ -703,19 +703,19 @@ msgid "Speed" msgstr "Rychlost" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Vyměnitelný disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Vyměnitelný disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Obrazy vyměnitelných disků" msgid "Image %1" -msgstr "" +msgstr "Obraz %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." -msgstr "86Box nenalezl žádné použitelné image pamětí ROM.\n\nStáhněte sadu obrazů ROM a extrahujte ji do složky \"roms\"." +msgstr "86Box nenalezl žádné použitelné obrazy pamětí ROM.\n\nStáhněte sadu obrazů ROM a extrahujte ji do složky \"roms\"." msgid "(empty)" msgstr "(prázdné)" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "COM a LPT porty" msgid "Ports" -msgstr "" +msgstr "Porty" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Sériové porty:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Paralelní porty:" msgid "Storage controllers" msgstr "Řadiče úložiště" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Pevné disky" msgid "Disks:" -msgstr "" +msgstr "Disky:" msgid "Floppy:" -msgstr "" +msgstr "Disketové jednotky:" msgid "Controllers:" -msgstr "" +msgstr "Řadiče:" msgid "Floppy & CD-ROM drives" msgstr "Disketové a CD-ROM mechaniky" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Jiné příslušenství" msgid "Other devices" -msgstr "" +msgstr "Jiná zařízení" msgid "Click to capture mouse" msgstr "Klikněte pro zabraní myši" @@ -850,31 +850,31 @@ msgid "Invalid PCap device" msgstr "Neplatné PCap zařízení" msgid "2-axis, 2-button joystick(s)" -msgstr "2osový, 2tlačítkový joystick" +msgstr "Joystick s 2 osami a 2 tlačítky" msgid "2-axis, 4-button joystick" -msgstr "2osový, 4tlačítkový joystick" +msgstr "Joystick s 2 osami a 4 tlačítky" msgid "2-axis, 6-button joystick" -msgstr "2osový, 6tlačítkový joystick" +msgstr "Joystick s 2 osami a 6 tlačítky" msgid "2-axis, 8-button joystick" -msgstr "2osový, 8tlačítkový joystick" +msgstr "Joystick s 2 osami a 8 tlačítky" msgid "3-axis, 2-button joystick" -msgstr "3osový, 2tlačítkový joystick" +msgstr "Joystick s 3 osami a 2 tlačítky" msgid "3-axis, 4-button joystick" -msgstr "3osový, 4tlačítkový joystick" +msgstr "Joystick s 3 osami a 4 tlačítky" msgid "4-axis, 4-button joystick" -msgstr "4osový, 4tlačítkový joystick" +msgstr "Joystick s 4 osami a 4 tlačítky" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Ovladač se 2 tlačítky" msgid "2-button flight yoke" -msgstr "" +msgstr "Letecký knipl se 2 tlačítky" msgid "4-button gamepad" -msgstr "" +msgstr "Ovladač se 4 tlačítky" msgid "4-button flight yoke" -msgstr "" +msgstr "Letecký knipl se 4 tlačítky" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Letecký knipl s 2 tlačítky a pákou" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Letecký knipl s 4 tlačítky a pákou" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volant pro Windows 95 (3 osy, 4 tlačítka)" msgid "None" msgstr "Žadné" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Vestavěné zařízení" msgid "&File" -msgstr "" +msgstr "&Soubor" msgid "&New machine..." -msgstr "" +msgstr "&Nový počítač..." msgid "&Check for updates..." -msgstr "" +msgstr "&Zkontrolovat aktualizace..." msgid "Exit" msgstr "Ukončit" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pozastavit" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Stisknout Ctrl+Alt+Delete" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Resetovat" msgid "Force shutdown" -msgstr "" +msgstr "Vynutit vypnutí" msgid "Start" -msgstr "" +msgstr "Spustit" msgid "Not running" -msgstr "" +msgstr "Neběží" msgid "Running" -msgstr "" +msgstr "Běží" msgid "Paused" -msgstr "" +msgstr "Pozastaveno" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Čeká" msgid "Powered Off" -msgstr "" +msgstr "Vypnuto" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n běžících" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n pozastavených" + +msgid "%n waiting" +msgstr "%n čekajících" + +msgid "%1 total" +msgstr "%1 celkem" + +msgid "VMs: %1" +msgstr "Počet virtuálních počítačů: %1" msgid "System Directory:" -msgstr "" +msgstr "Systémový adresář:" msgid "Choose directory" -msgstr "" +msgstr "Vyberte adresář" msgid "Choose configuration file" -msgstr "" +msgstr "Vyberte konfigurační soubor" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Konfigurační soubory 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Čtení konfigurace selhalo" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Nebylo možné otevřít vybraný konfigurační soubor pro čtení: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Použít ve vyhledávacím poli regulární výrazy" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 počítač(ů) je stále aktivních. Opravdu chcete ukončit správce virtuálních počítačů?" msgid "Add new system wizard" -msgstr "" +msgstr "Průvodce přidáním nového systému" msgid "Introduction" -msgstr "" +msgstr "Úvod" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Tento průvodce vám pomůže přidat nový systém do programu 86Box." msgid "New configuration" -msgstr "" +msgstr "Nová konfigurace" msgid "Complete" -msgstr "" +msgstr "Závěr" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Průvodce nyní spustí konfiguraci nového systému." msgid "Use existing configuration" -msgstr "" +msgstr "Použít existující konfiguraci" msgid "Type some notes here" -msgstr "" +msgstr "Zde zadejte nějaké poznámky" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Vložte obsah stávajícího konfiguračního souboru do pole níže." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Načíst konfiguraci ze souboru" msgid "System name" -msgstr "" +msgstr "Název systému" msgid "System name:" -msgstr "" +msgstr "Název systému:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Název systému nesmí obsahovat určité znaky" msgid "System name already exists" -msgstr "" +msgstr "Název systému již existuje" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Zadejte adresář pro systém" msgid "Directory does not exist" -msgstr "" +msgstr "Adresář neexistuje" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Pro tento systém bude vytvořen nový adresář ve výše zvoleném adresáři." msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Umístění systému:" msgid "System name and location" -msgstr "" +msgstr "Název systému a umístění" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Zadejte název systému a vyberte umístění" msgid "Enter the name of the system" -msgstr "" +msgstr "Zadejte název systému" msgid "Please enter a system name" -msgstr "" +msgstr "Zadejte název systému" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Zobrazované jméno (volitelné):" msgid "Display name:" -msgstr "" +msgstr "Zobrazované jméno:" msgid "Set display name" -msgstr "" +msgstr "Nastavit zobrazované jméno" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Zadejte nové zobrazované jméno (prázdné pole pro vymazání)" msgid "Change &display name..." -msgstr "" +msgstr "Změnit &zobrazované jméno..." msgid "Context Menu" -msgstr "" +msgstr "Kontextová nabídka" msgid "&Open folder..." -msgstr "" +msgstr "&Otevřít složku..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Otevřít zásobník &tiskárny..." msgid "Set &icon..." -msgstr "" +msgstr "Nastavit &ikonu..." msgid "Select an icon" -msgstr "" +msgstr "Vyberte ikonu" msgid "C&lone..." -msgstr "" +msgstr "K&lonovat..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuální počítač \"%1\" (%2) bude naklonován do:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Adresář %1 již existuje." msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "V názvu nelze použít následující znaky: %1" msgid "Clone" -msgstr "" +msgstr "Klonovat" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Nepodařilo se vytvořit adresář pro klonovaný virtuální počítač" msgid "Failed to clone VM." -msgstr "" +msgstr "Klonování virtuálního počítače se nezdařilo." msgid "Directory in use" -msgstr "" +msgstr "Adresář se již používá" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Vybraný adresář je již používán. Vyberte prosím jiný adresář." msgid "Create directory failed" -msgstr "" +msgstr "Vytvoření adresáře se nezdařilo" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Nelze vytvořit adresář pro nový systém" msgid "Configuration write failed" -msgstr "" +msgstr "Selhal zápis konfigurace" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Nebylo možné otevřít konfigurační soubor %1 pro zápis" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Chyba při přidávání systému" msgid "Remove directory failed" -msgstr "" +msgstr "Odstranění adresáře se nezdařilo" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Některé soubory v adresáři zařízení nebylo možné odstranit. Odstraňte je prosím ručně." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Verze" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Je k dispozici aktualizace pro 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Při kontrole aktualizací došlo k chybě: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Je k dispozici aktualizace pro 86Box!" msgid "Warning" -msgstr "" +msgstr "Varování" msgid "&Kill" -msgstr "" +msgstr "Vynutit &ukončení" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Ukončení virtuálního počítače může způsobit ztrátu dat. Proveďte to pouze v případě, že proces programu 86Box zamrzne.\n\nOpravdu chcete ukončit virtuální počítač \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Odstranit" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Opravdu chcete odstranit virtuální počítač \"%1\" a všechny jeho soubory? Tuto akci nelze vrátit zpět!" msgid "Show &config file" -msgstr "" +msgstr "Zobrazit &konfigurační soubor" msgid "No screenshot" -msgstr "" +msgstr "Žádný snímek obrazovky" msgid "Search" -msgstr "" +msgstr "Hledat" msgid "Searching for VMs..." -msgstr "" +msgstr "Hledání virtuálních počítačů..." msgid "Found %1" -msgstr "" +msgstr "Nalezeno %1" msgid "System" -msgstr "" +msgstr "Systém" msgid "Storage" -msgstr "" +msgstr "Úložiště" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1: " msgid "No disks" -msgstr "" +msgstr "Žádné disky" msgid "Audio" -msgstr "" +msgstr "Zvuk" msgid "Audio:" -msgstr "" +msgstr "Zvuk:" msgid "ACPI shutdown" msgstr "Vypnout skrze rozhraní ACPI" @@ -1354,10 +1360,10 @@ msgid "Add Existing Hard Disk" msgstr "Přidat existující pevný disk" msgid "HDI disk images cannot be larger than 4 GB." -msgstr "Obraz disku formátu HDI nemůžou být větší než 4 GB." +msgstr "Obrazy disku formátu HDI nemůžou být větší než 4 GB." msgid "Disk images cannot be larger than 127 GB." -msgstr "Obraz disku nemůžou být větší než 127 GB." +msgstr "Obrazy disku nemůžou být větší než 127 GB." msgid "Hard disk images" msgstr "Obrazy pevného disku" @@ -1369,7 +1375,7 @@ msgid "Unable to write file" msgstr "Nebylo možné zapisovat do souboru" msgid "HDI or HDX images with a sector size other than 512 are not supported." -msgstr "Obraz disku ve formátu HDI nebo HDX s velikostí sektoru jinou než 512 bajtů nejsou podporovány." +msgstr "Obrazy disku ve formátu HDI nebo HDX s velikostí sektoru jinou než 512 bajtů nejsou podporovány." msgid "Disk image file already exists" msgstr "Soubor obrazu disku již existuje" @@ -1453,16 +1459,16 @@ msgid "VHD files" msgstr "Soubory VHD" msgid "Select the parent VHD" -msgstr "Vyberte nadřazený virtuální disk" +msgstr "Vyberte nadřazený VHD disk" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "To může znamenat, že se obsahy nadřazeného disku změnily po vytvoření rozdílového disku.\n\nTato chyba také může nastat, pokud byl obraz disku kopírován nebo přesunut, nebo kvůli chybě v programu, který jej vytvořil.\n\nChcete časová razítka opravit?" +msgstr "Toto může znamenat, že se obsahy nadřazeného disku změnily po vytvoření rozdílového disku.\n\nTato chyba také může nastat, pokud byl obraz disku kopírován nebo přesunut, nebo kvůli chybě v programu, který jej vytvořil.\n\nChcete časová razítka opravit?" msgid "Parent and child disk timestamps do not match" msgstr "Časová razítka nadřazeného a podřazeného disku nesouhlasí" msgid "Could not fix VHD timestamp." -msgstr "Nebylo možné opravit časové razítko VHD." +msgstr "Nebylo možné opravit časové razítko VHD disku." msgid "MFM/RLL" msgstr "MFM/RLL" @@ -1600,10 +1606,10 @@ msgid "WinBox is no longer supported" msgstr "WinBox již není podporován" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "Vývoj správce WinBox byl zastaven v roce 2022 z důvodu nedostatku správců. Vzhledem k tomu, že naše úsilí směřujeme k tomu, abychom 86Box ještě vylepšili, rozhodli jsme se WinBox jako správce již nepodporovat.\n\nProstřednictvím WinBoxu nebudou poskytovány žádné další aktualizace a pokud jej budete nadále používat s novějšími verzemi 86Boxu, můžete se setkat s nesprávným chováním. Veškerá hlášení o chybách souvisejících s chováním WinBoxu budou uzavřena jako neplatná.\n\nSeznam dalších správců, které můžete používat, najdete na webu 86box.net." +msgstr "Vývoj manažéru WinBox skončil v roce 2022 kvůli nedostatku vývojářů. Jelikož směřujeme naše úsilí k tomu, abychom udělali 86Box ještě lepší, rozhodli jsme se dále nepodporovat WinBox jakožto manažér.\n\nŽádné další aktualizace nebudou skrze WinBox nabízeny a můžete se setkat s nesprávným chováním při běhu s novejšími verzemi emulátoru 86Box. Jakékoliv nahlášené chyby související s manažérem WinBox budou řešeny jako neplatné.\n\nVizte 86box.net pro seznam jiných manažérů, které můžete používat." msgid "Generate" -msgstr "Vytvoř" +msgstr "Generovat" msgid "Joystick configuration" msgstr "Konfigurace joysticku" @@ -1626,11 +1632,8 @@ msgstr "Seznam zařízení MCA:" msgid "&Tablet tool" msgstr "Nástroj pro tablety" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" -msgstr "O programu &Qt" +msgstr "O platformě &Qt" msgid "&MCA devices..." msgstr "Zařízení MCA ..." @@ -1639,10 +1642,10 @@ msgid "Show non-&primary monitors" msgstr "Zobrazit neprimární monitory" msgid "Open screenshots &folder..." -msgstr "Otevři složku screenshots..." +msgstr "Otevřít složku se snímky obrazovky" msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Použití režimu roztá&hnutí při celé obrazovce při maximalizaci" +msgstr "Použít režim roztá&hnutí při celé obrazovce pro maximalizované okno" msgid "&Cursor/Puck" msgstr "&Kurzor/Puk" @@ -1660,7 +1663,7 @@ msgid "Clear image &history" msgstr "Vymaž &historie snímků" msgid "Create..." -msgstr "Vytvoř..." +msgstr "Vytvořit..." msgid "Host CD/DVD Drive (%1)" msgstr "Jednotka CD/DVD hostitele (%1)" @@ -1672,19 +1675,19 @@ msgid "Null Driver" msgstr "Nulový ovladač" msgid "NIC:" -msgstr "" +msgstr "Síťový adaptér:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Síťový adaptér %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Síťový adaptér %1 (%2) %3" msgid "Render behavior" msgstr "Chování vykreslování" msgid "Use target framerate:" -msgstr "Použij cílovou snímkovou frekvenci:" +msgstr "Použít cílovou snímkovou frekvenci:" msgid " fps" msgstr " fps" @@ -1699,10 +1702,10 @@ msgid "Shaders" msgstr "Shadery" msgid "Remove" -msgstr "Odstraň" +msgstr "Odstranit" msgid "Browse..." -msgstr "Prohlížejte..." +msgstr "Browse..." msgid "Couldn't create OpenGL context." msgstr "Nepodařilo se vytvořit kontext OpenGL." @@ -1726,13 +1729,13 @@ msgid "This machine might have been moved or copied." msgstr "Tento počítač mohl být přemístěn nebo zkopírován." msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." -msgstr "Pro zajištění správné funkce sítě potřebuje 86Box vědět, zda byl tento počítač přesunut nebo zkopírován.\n\nJestliže si nejste jisti, zvolte \"Zkopíroval jsem ho\"." +msgstr "Pro zajištění správné funkce sítě potřebuje 86Box vědět, zda byl tento počítač přesunut nebo zkopírován.\n\nJestliže si nejste jisti, zvolte možnost \"Zkopíroval jsem jej\"." msgid "I Moved It" -msgstr "Přesunul jsem ho" +msgstr "Přesunul jsem jej" msgid "I Copied It" -msgstr "Zkopíroval jsem ho" +msgstr "Zkopíroval jsem jej" msgid "86Box Monitor #" msgstr "86Box Monitor " @@ -1744,19 +1747,19 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" -msgstr "Síťová karta 1" +msgstr "Síťový adaptér 1" msgid "Network Card #2" -msgstr "Síťová karta 2" +msgstr "Síťový adaptér 2" msgid "Network Card #3" -msgstr "Síťová karta 3" +msgstr "Síťový adaptér 3" msgid "Network Card #4" -msgstr "Síťová karta 4" +msgstr "Síťový adaptér 4" msgid "Mode:" msgstr "Režim:" @@ -1774,7 +1777,7 @@ msgid "86Box Unit Tester" msgstr "86Box Unit Tester" msgid "Novell NetWare 2.x Key Card" -msgstr "Klíčová karta Novell NetWare 2.x" +msgstr "Karta s klíčem pro Novell NetWare 2.x" msgid "Serial port passthrough 1" msgstr "Průchod sériového portu 1" @@ -1789,25 +1792,25 @@ msgid "Serial port passthrough 4" msgstr "Průchod sériového portu 4" msgid "Renderer &options..." -msgstr "Možnosti vykreslovače..." +msgstr "Možnosti rendereru..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT klávesnice" msgid "AT Keyboard" -msgstr "" +msgstr "AT klávesnice" msgid "AX Keyboard" -msgstr "" +msgstr "AX klávesnice" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2 klávesnice" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55 klávesnice" msgid "Keys" -msgstr "" +msgstr "Klávesy" msgid "Logitech/Microsoft Bus Mouse" msgstr "Sběrnicová myš Logitech/Microsoft" @@ -1819,28 +1822,28 @@ msgid "Mouse Systems Serial Mouse" msgstr "Sériová myš Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Sběrnicová myš Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Sériová myš Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Sériová myš Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Sériová myš Logitech" msgid "PS/2 Mouse" -msgstr "Myš PS/2" +msgstr "PS/2 myš" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 myš QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (sériová)" msgid "Default Baud rate" -msgstr "" +msgstr "Výchozí přenosová rychlost" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Modem kompatibilní se standardem Hayes" @@ -1858,7 +1861,7 @@ msgid "Roland CM-32LN Emulation" msgstr "Emulace Roland CM-32LN" msgid "OPL4-ML Daughterboard" -msgstr "Dceřiná deska OPL4-ML" +msgstr "Dceřinná deska OPL4-ML" msgid "System MIDI" msgstr "Systémové MIDI" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Vstupní zařízení MIDI" msgid "BIOS file" -msgstr "" +msgstr "Soubor BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Soubor BIOS (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Soubor BIOS (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Soubor BIOS (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Soubor BIOS (ROM 4)" msgid "BIOS address" -msgstr "Adresa BIOSu" +msgstr "Adresa BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Adresa BIOS (ROM 4)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Adresa BIOS (ROM 4)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Adresa BIOS (ROM 4)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Adresa BIOS (ROM 4)" msgid "Enable BIOS extension ROM Writes" -msgstr "Povolení zápisu do rozšiřující paměti ROM systému BIOS" +msgstr "Povolit zápis do paměti ROM s rozšířením BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Povolit zápis do paměti ROM s rozšířením BIOS (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Povolit zápis do paměti ROM s rozšířením BIOS (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Povolit zápis do paměti ROM s rozšířením BIOS (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Povolit zápis do paměti ROM s rozšířením BIOS (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Začátek lineárního framebufferu" msgid "Address" msgstr "Adresa" @@ -1921,28 +1924,28 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "Přerušení sériového portu" msgid "Parallel port IRQ" -msgstr "" +msgstr "Přerušení paralelního portu" msgid "BIOS Revision" -msgstr "Revize BIOSu" +msgstr "Revize BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Verze BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Jazyk BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Rozšiřující jednotka IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "Kazetový Basic IBM" msgid "Translate 26 -> 17" -msgstr "Přeložit 26 -> 17" +msgstr "Překládat 26 -> 17" msgid "Language" msgstr "Jazyk" @@ -1951,43 +1954,43 @@ msgid "Enable backlight" msgstr "Povolit podsvícení" msgid "Invert colors" -msgstr "Invertování barev" +msgstr "Převrátit barvy" msgid "BIOS size" -msgstr "Velikost BIOSu" +msgstr "Velikost BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Velikost BIOS (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Velikost BIOS (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Velikost BIOS (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Velikost BIOS (ROM 4)" msgid "Map C0000-C7FFF as UMB" -msgstr "Mapovat C0000-C7FFF jako UMB" +msgstr "Namapovat C0000-C7FFF jako UMB" msgid "Map C8000-CFFFF as UMB" -msgstr "Mapovat C8000-CFFFF jako UMB" +msgstr "Namapovat C8000-CFFFF jako UMB" msgid "Map D0000-D7FFF as UMB" -msgstr "Mapovat D0000-D7FFF jako UMB" +msgstr "Namapovat D0000-D7FFF jako UMB" msgid "Map D8000-DFFFF as UMB" -msgstr "Mapovat D8000-DFFFF jako UMB" +msgstr "Namapovat D8000-DFFFF jako UMB" msgid "Map E0000-E7FFF as UMB" -msgstr "Mapovat E0000-E7FFF jako UMB" +msgstr "Namapovat E0000-E7FFF jako UMB" msgid "Map E8000-EFFFF as UMB" -msgstr "Mapovat E8000-EFFFF jako UMB" +msgstr "Namapovat E8000-EFFFF jako UMB" msgid "JS9 Jumper (JIM)" -msgstr "JS9 propojka (JIM)" +msgstr "Jumper JS9 (JIM)" msgid "MIDI Output Device" msgstr "Výstupní zařízení MIDI" @@ -1996,10 +1999,10 @@ msgid "MIDI Real time" msgstr "MIDI v reálném čase" msgid "MIDI Thru" -msgstr "Průchozí vstupu MIDI" +msgstr "Průchod vstupu MIDI" msgid "MIDI Clockout" -msgstr "Odbíjení hodin MIDI" +msgstr "Výstup MIDI hodin" msgid "SoundFont" msgstr "SoundFont" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Metoda interpolace" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dynamické načítání vzorků" msgid "Reverb Output Gain" msgstr "Zesílení výstupu dozvuku" @@ -2074,10 +2077,10 @@ msgid "Controller" msgstr "Řadič" msgid "Show Crosshair" -msgstr "Zobrazení křížového ukazatele" +msgstr "Zobrazit zaměřovací kříž" msgid "DMA" -msgstr "DMA" +msgstr "DMA kanál" msgid "MAC Address" msgstr "Adresa MAC" @@ -2095,7 +2098,7 @@ msgid "TCP/IP listening port" msgstr "Naslouchací port TCP/IP" msgid "Phonebook File" -msgstr "Soubor telefonního seznamu" +msgstr "Soubor s telefonním seznamem" msgid "Telnet emulation" msgstr "Emulace Telnetu" @@ -2107,7 +2110,7 @@ msgid "RAM size" msgstr "Velikost RAMu" msgid "Initial RAM size" -msgstr "Počáteční velikost RAMu" +msgstr "Počáteční velikost RAM" msgid "Serial Number" msgstr "Sériové číslo" @@ -2116,28 +2119,28 @@ msgid "Host ID" msgstr "ID hostitele" msgid "FDC Address" -msgstr "Adresa FDCu" +msgstr "Adresa FDC" msgid "MPU-401 Address" msgstr "Adresa MPU-401" msgid "MPU-401 IRQ" -msgstr "IRQ MPU-401" +msgstr "Přerušení MPU-401" msgid "Receive MIDI input" -msgstr "Příjem vstupu MIDI" +msgstr "Přijímat vstup MIDI" msgid "Low DMA" -msgstr "Nízký DMA" +msgstr "Nízký DMA kanál" msgid "Enable Game port" msgstr "Povolit herní port" msgid "SID Model" -msgstr "" +msgstr "Model SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Síla filtru SID" msgid "Surround module" msgstr "Modul Surround" @@ -2146,22 +2149,22 @@ msgid "CODEC" msgstr "CODEC" msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" -msgstr "Vyvolání přerušení CODEC při nastavení CODEC (potřebují některé ovladače)" +msgstr "Vyvolát přerušení CODEC při nastavení CODEC (potřebují některé ovladače)" msgid "SB Address" msgstr "Adresa SB" msgid "Adlib Address" -msgstr "" +msgstr "Adresa Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Použít nastavení EEPROM" msgid "WSS IRQ" msgstr "IRQ WSS" msgid "WSS DMA" -msgstr "DMA WSS" +msgstr "DMA kanál WSS" msgid "Enable OPL" msgstr "Povolit OPL" @@ -2170,7 +2173,7 @@ msgid "Receive MIDI input (MPU-401)" msgstr "Příjem vstupu MIDI (MPU-401)" msgid "SB low DMA" -msgstr "Nízký DMA SB" +msgstr "Nízký DMA kanál SB" msgid "6CH variant (6-channel)" msgstr "Varianta 6CH (6 kanálů)" @@ -2179,13 +2182,13 @@ msgid "Enable CMS" msgstr "Povolit CMS" msgid "Mixer" -msgstr "Směšovač" +msgstr "Mixér" msgid "High DMA" -msgstr "Vysoký DMA" +msgstr "Vysoký DMA kanál" msgid "Control PC speaker" -msgstr "Ovládát reproduktoru PC" +msgstr "Ovládat PC Speaker" msgid "Memory size" msgstr "Velikost pamĕti" @@ -2236,19 +2239,19 @@ msgid "MMIO Address" msgstr "Adresa MMIO" msgid "RAMDAC type" -msgstr "Typ RAMDACu" +msgstr "Typ RAMDAC" msgid "Blend" -msgstr "Směs" +msgstr "Smísit" msgid "Font" -msgstr "" +msgstr "Písmo" msgid "Bilinear filtering" msgstr "Bilineární filtrování" msgid "Video chroma-keying" -msgstr "" +msgstr "Barevné klíčování obrazu" msgid "Dithering" msgstr "Dithering" @@ -2290,40 +2293,40 @@ msgid "Transfer Speed" msgstr "Rychlost přenosu" msgid "EMS mode" -msgstr "Režím EMS" +msgstr "Režim EMS" msgid "EMS Address" -msgstr "" +msgstr "Adresa EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Adresa EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Adresa EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Velikost paměti EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Velikost paměti EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Velikost paměti EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Povolit EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Povolit EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Povolit EMS 2" msgid "Address for > 2 MB" msgstr "Adresa pro > 2 MB" msgid "Frame Address" -msgstr "Rámcová adresa" +msgstr "Adresa rámce" msgid "USA" msgstr "Spojené státy" @@ -2362,7 +2365,7 @@ msgid "Non-timed (original)" msgstr "Bez časování (originální)" msgid "45 Hz (JMP2 not populated)" -msgstr "45 Hz (JMP2 není vyplněn)" +msgstr "45 Hz (JMP2 není osazen)" msgid "Two" msgstr "Dvě" @@ -2374,10 +2377,10 @@ msgid "Wheel" msgstr "Kolečko" msgid "Five + Wheel" -msgstr "Pět + kolečko" +msgstr "Pět s kolečkem" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Pět se 2 kolečky" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 sériová / SMT3(R)V" @@ -2440,7 +2443,10 @@ msgid "256 KB" msgstr "256 KB" msgid "Composite" -msgstr "Kompozitný" +msgstr "Kompozitní" + +msgid "True color" +msgstr "True Color" msgid "Old" msgstr "Starý" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Lineární interpolace" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Má druhou sadu 8x8 znaků" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Má dceřinnou desků Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternativní monochromatický kontrast" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Šedý" msgid "Grayscale" -msgstr "" +msgstr "Odstíny šedi" msgid "Color" msgstr "Barevný" @@ -2533,19 +2539,19 @@ msgid "Other languages" msgstr "Ostatní jazyky" msgid "Bochs latest" -msgstr "Bochs nejnovější" +msgstr "Nejnovější Bochs" msgid "Apply overscan deltas" -msgstr "" +msgstr "Použít delty přesahu" msgid "Mono Interlaced" -msgstr "" +msgstr "Monochromatický s prokládaním" msgid "Mono Non-Interlaced" msgstr "Monochromatický bez prokládání" msgid "Color Interlaced" -msgstr "Barevný prokládaný" +msgstr "Barevný s prokládaním" msgid "Color Non-Interlaced" msgstr "Barevný bez prokládání" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Grafický akcelerátor 3dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "Grafický akcelerátor 3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 jednotky TMU)" @@ -2611,7 +2617,7 @@ msgid "Host Serial Device" msgstr "Hostitelské sériové zařízení" msgid "Name of pipe" -msgstr "Název potrubí" +msgstr "Název pojmenované roury" msgid "Data bits" msgstr "Datové bity" @@ -2623,10 +2629,10 @@ msgid "Baud Rate of Passthrough" msgstr "Přenosová rychlost průchodu" msgid "Named Pipe (Server)" -msgstr "Pojmenované potrubí (server)" +msgstr "Pojmenovaná roura (server)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Pojmenovaná roura (klient)" msgid "Host Serial Passthrough" msgstr "Průchod sériového portu hostitele" @@ -2635,7 +2641,7 @@ msgid "E&ject %1" msgstr "&Vyjmout %1" msgid "&Unmute" -msgstr "&Roztišit" +msgstr "&Zrušit ztišení" msgid "Softfloat FPU" msgstr "Softfloat FPU" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "Vysoký dopad na výkon" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Disk RAM (max. rychlost)" +msgstr "[Obecný] Disk RAM (max. rychlost)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Obecný] 1989 (3500 ot./m)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Obecný] 1992 (3600 ot./m)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Obecný] 1994 (4500 ot./m)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Obecný] 1996 (5400 ot./m)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Obecný] 1997 (5400 ot./m)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Obecný] 1998 (5400 ot./m)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Obecný] 2000 (7200 ot./m)" msgid "IBM 8514/A clone (ISA)" msgstr "Klon IBM 8514/A (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Výrobce" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Obecné rozšíření paměti PC/XT" @@ -2686,229 +2692,265 @@ msgid "Generic PC/AT Memory Expansion" msgstr "Obecné rozšíření paměti PC/AT" msgid "Unable to find Dot-Matrix fonts" -msgstr "Nastala chyba při nachození jehličkových písem" +msgstr "Nebylo možné nalézt písma pro jehličkovou tiskárnu" msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer." msgstr "Pro emulaci obecné jehličkové tiskárny ESC/P jsou vyžadována písma TrueType ve složce \"roms/printer/fonts\"." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Potlačit stisk multimediálních kláves" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Vyžadovat potvrzení před uložením nastavení" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Vyžadovat potvrzení před resetováním" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Vyžadovat potvrzení před ukončením" msgid "Options" -msgstr "" +msgstr "Možnosti" msgid "Model" -msgstr "" +msgstr "Model" msgid "Model:" -msgstr "" +msgstr "Model:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Selhala inicializace rendereru Vulkan." msgid "GLSL Error" -msgstr "" +msgstr "Chyba GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "Nebylo možné načíst shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Je vyžadováno OpenGL verze 3.0 nebo větší. Současná verze GLSL je %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Nebylo možné načíst texturu: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Nebylo možné zkompilovat shader:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Program nebyl spojen:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Správce shaderů" msgid "Shader Configuration" -msgstr "" +msgstr "Konfigurace shaderu" msgid "Add" -msgstr "" +msgstr "Přidat" msgid "Move up" -msgstr "" +msgstr "Posunout výš" msgid "Move down" -msgstr "" +msgstr "Posunout níž" msgid "Could not load file %1" -msgstr "" +msgstr "Nebylo možné načíst soubor %1" msgid "Key Bindings:" -msgstr "" +msgstr "Nastavení kláves" msgid "Action" -msgstr "" +msgstr "Akce" msgid "Keybind" -msgstr "" +msgstr "Klávesy" msgid "Clear binding" -msgstr "" +msgstr "Smazat nastavení" msgid "Bind" -msgstr "" +msgstr "Nastavit" msgid "Bind Key" -msgstr "" +msgstr "Nastavit klávesu" msgid "Enter key combo:" -msgstr "" +msgstr "Zadejte kombinaci kláves" msgid "Bind conflict" -msgstr "" +msgstr "Konflikt nastavení" msgid "This key combo is already in use." -msgstr "" +msgstr "Tato kombinace kláves je již použita." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Stisknout Ctrl+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Stisknout Ctrl+Alt+Esc" msgid "Toggle fullscreen" -msgstr "" +msgstr "Přepnout režim celé obrazovky" msgid "Screenshot" -msgstr "" +msgstr "Pořídit snímek obrazovky" msgid "Release mouse pointer" -msgstr "" +msgstr "Uvolnit kurzor myši" msgid "Toggle pause" -msgstr "" +msgstr "Pozastavit nebo obnovit" msgid "Toggle mute" -msgstr "" +msgstr "Přepnout ztišení" msgid "Text files" -msgstr "" +msgstr "Textové soubory" msgid "ROM files" -msgstr "" +msgstr "Soubory ROM" msgid "SoundFont files" -msgstr "" +msgstr "Soubory SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Lokální switch" msgid "Remote Switch" -msgstr "" +msgstr "Vzdálený switch" msgid "Switch:" -msgstr "" +msgstr "Switch:" msgid "Hub Mode" -msgstr "" +msgstr "Režim hubu" msgid "Hostname:" -msgstr "" +msgstr "Hostitelské jméno" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA paměť RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA paměť ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Vymazat NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Tímto se smažou všechny soubory NVRAM (a související soubory) virtuálního počítače umístěné v podadresáři \"nvr\". V případě potřeby budete muset znovu nakonfigurovat nastavení systému BIOS (a případně i dalších zařízení uvnitř virtuálního počítače).\n\nOpravdu chcete smazat veškerý obsah NVRAM virtuálního počítače \"%1\"?" msgid "Success" -msgstr "" +msgstr "Úspěch" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Úspěšně vymazán obsah NVRAM virtuálního počítače \"%1\"" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Při pokusu o vymazání obsahu NVRAM virtuálního počítače \"%1\" došlo k chybě" msgid "%1 VM Manager" -msgstr "" +msgstr "Správce virtuálních počítačů %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disk(ů)" msgid "Unknown Status" -msgstr "" +msgstr "Neznámý stav" msgid "No Machines Found!" -msgstr "" +msgstr "Žádné počítače nebyly nalezeny!" msgid "Check for updates on startup" -msgstr "" +msgstr "Zkontrolovat aktualizace při spuštění" msgid "Unable to determine release information" -msgstr "" +msgstr "Nebylo možné zjistit informace o vydání" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Při kontrole aktualizací došlo k chybě:\n\n%1\n\nZkuste to prosím znovu později." msgid "Update check complete" -msgstr "" +msgstr "Kontrola aktualizací dokončena" + +msgid "stable" +msgstr "stabilní" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Používáte nejnovější %1 verzi 86Boxu: %2" msgid "version" -msgstr "" +msgstr "verze" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Právě používáte verzi %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "K dispozici je nyní verze %1." + +msgid "You are currently running build %1." +msgstr "Právě používáte build %1." + +msgid "Build %1 is now available." +msgstr "K dispozici je nyní build %1." + +msgid "Would you like to visit the download page?" +msgstr "Chcete navštívit stránku pro stažení?" msgid "Visit download page" -msgstr "" +msgstr "Navštívit stránku pro stažení" msgid "Update check" -msgstr "" +msgstr "Kontrola aktualizací" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Probíhá kontrola aktualizací..." msgid "86Box Update" -msgstr "" +msgstr "Aktualizace 86Box" msgid "Release notes:" -msgstr "" +msgstr "Poznámky k vydání:" -#~ msgid "HD Controller:" -#~ msgstr "Řadič disku:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Mechaniky ZIP:" +msgid "Virtual machine crash" +msgstr "Havárie virtuálního počítače" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Proces virtuálního počítače \"%1\" byl neočekávaně ukončen s kódem ukončení %2." -#~ msgid "ZIP images" -#~ msgstr "Obrazy ZIP disků" +msgid "The system will not be added." +msgstr "Systém nebude přidán." + +msgid "&Update mouse every CPU frame" +msgstr "&Aktualizovat myš při každém CPU rámci" + +msgid "Hue" +msgstr "Odstín" + +msgid "Saturation" +msgstr "Sytost" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Jas" + +msgid "Sharpness" +msgstr "Ostrost" + +msgid "&CGA composite settings..." +msgstr "Nastavení kompozitního výstupu &CGA..." + +msgid "CGA composite settings" +msgstr "Nastavení kompozitního výstupu CGA" diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po index e88d5c8af..28caf0d71 100644 --- a/src/qt/languages/de-DE.po +++ b/src/qt/languages/de-DE.po @@ -25,19 +25,19 @@ msgid "Ctrl+Alt+&Esc" msgstr "Strg+Alt+&Esc" msgid "&Pause" -msgstr "&Pause" +msgstr "&Pausieren" msgid "Pause" -msgstr "" +msgstr "Pausieren" msgid "Re&sume" msgstr "&Fortsetzen" msgid "E&xit" -msgstr "Be&enden" +msgstr "&Beenden" msgid "&View" -msgstr "&Ansicht" +msgstr "A&nsicht" msgid "&Hide status bar" msgstr "&Statusleiste ausblenden" @@ -46,10 +46,10 @@ msgid "Hide &toolbar" msgstr "&Werkzeugleiste ausblenden" msgid "&Resizeable window" -msgstr "&Größenverstellbares Fenster" +msgstr "G&rößenverstellbares Fenster" msgid "R&emember size && position" -msgstr "&Größe && Position merken" +msgstr "Größe && &Position merken" msgid "Re&nderer" msgstr "Re&nderer" @@ -57,9 +57,6 @@ msgstr "Re&nderer" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -67,9 +64,9 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify &dimensions..." -msgstr "Fenstergröße einstellen..." +msgstr "Fenstergröße &einstellen..." -msgid "F&orce 4:3 display ratio" +msgid "Force &4:3 display ratio" msgstr "&4:3-Seitenverhältnis erzwingen" msgid "&Window scale factor" @@ -106,7 +103,7 @@ msgid "&8x" msgstr "&8x" msgid "Fi<er method" -msgstr "Filterungsmethode" +msgstr "Filterungsmet&hode" msgid "&Nearest" msgstr "&Nächster Nachbar" @@ -118,10 +115,10 @@ msgid "Hi&DPI scaling" msgstr "Hi&DPI-Skalierung" msgid "&Fullscreen" -msgstr "&Vollbild" +msgstr "Vo&llbild" msgid "Fullscreen &stretch mode" -msgstr "&Vollbild-Skalierungsmodus" +msgstr "Vollbild-S&kalierungsmodus" msgid "&Full screen stretch" msgstr "&Vollbild-Streckung" @@ -138,8 +135,8 @@ msgstr "&Integer-Skalierung" msgid "4:&3 Integer scale" msgstr "4:&3 Integer-Skalierung" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGA-Einstellungen" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGA-Einstellungen" msgid "&Inverted VGA monitor" msgstr "&Invertierte VGA-Anzeige" @@ -148,7 +145,7 @@ msgid "VGA screen &type" msgstr "&VGA-Bildschirmtyp" msgid "RGB &Color" -msgstr "&RGB-Farbe" +msgstr "RGB-&Farbe" msgid "RGB (no brown)" msgstr "RGB (ohne Braun)" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Optionen..." msgid "Settings..." -msgstr "" +msgstr "Einstellungen..." msgid "&Update status bar icons" msgstr "&Statusleistenicons aktualisieren" @@ -205,7 +202,7 @@ msgid "Take s&creenshot" msgstr "S&creenshot aufnehmen" msgid "S&ound" -msgstr "S&ound" +msgstr "&Ton" msgid "&Preferences..." msgstr "&Einstellungen..." @@ -364,10 +361,10 @@ msgid "Configure" msgstr "Konfigurieren" msgid "CPU:" -msgstr "" +msgstr "Prozessor:" msgid "CPU type:" -msgstr "CPU-Typ:" +msgstr "Prozessor-Typ:" msgid "Speed:" msgstr "Geschwindigkeit:" @@ -391,7 +388,7 @@ msgid "Time synchronization" msgstr "Zeitsynchronisierung" msgid "Disabled" -msgstr "Ausgeschaltet" +msgstr "Ohne" msgid "Enabled (local time)" msgstr "Eingeschaltet (Lokale Uhrzeit)" @@ -412,10 +409,10 @@ msgid "Smaller frames (smoother)" msgstr "Kleinere Frames (flüssiger)" msgid "Video:" -msgstr "Videokarte:" +msgstr "Grafikkarte:" msgid "Video #2:" -msgstr "Videokarte 2:" +msgstr "Grafikkarte 2:" msgid "Voodoo 1 or 2 Graphics" msgstr "Voodoo 1 oder 2 Grafik" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA-Grafik" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 Grafik-Adapter" msgid "Keyboard:" msgstr "Tastatur:" msgid "Keyboard" -msgstr "" +msgstr "Tastatur" msgid "Mouse:" msgstr "Maus:" msgid "Mouse" -msgstr "" +msgstr "Maus" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -519,6 +516,9 @@ msgstr "LPT3-Gerät:" msgid "LPT4 Device:" msgstr "LPT4-Gerät:" +msgid "Internal LPT ECP DMA:" +msgstr "" + msgid "Serial port 1" msgstr "Serielle Schnittstelle 1" @@ -544,7 +544,7 @@ msgid "Parallel port 4" msgstr "Parallelport 4" msgid "FD Controller:" -msgstr "FD-Controller:" +msgstr "Disketten-Controller:" msgid "CD-ROM Controller:" msgstr "CD-ROM-Controller:" @@ -643,7 +643,7 @@ msgid "MO:" msgstr "" msgid "Removable disks:" -msgstr "" +msgstr "Wechseldatenträger:" msgid "Removable disk drives:" msgstr "Wechseldatenträger:" @@ -763,7 +763,7 @@ msgid "Input devices" msgstr "Eingabegeräte" msgid "Sound" -msgstr "Sound" +msgstr "Ton" msgid "Network" msgstr "Netzwerk" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Anschlüsse (COM + LPT)" msgid "Ports" -msgstr "" +msgstr "Anschlüsse" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Serielle Anschlüsse:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Parallele Anschlüsse:" msgid "Storage controllers" msgstr "Speichercontroller" @@ -790,13 +790,13 @@ msgid "Disks:" msgstr "" msgid "Floppy:" -msgstr "" +msgstr "Diskette:" msgid "Controllers:" -msgstr "" +msgstr "Controller:" msgid "Floppy & CD-ROM drives" -msgstr "Disketten- + CD-ROM-Laufwerke" +msgstr "Disketten- & CD-ROM-Laufwerke" msgid "Other removable devices" msgstr "Andere Wechsellaufwerke" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Andere Peripheriegeräte" msgid "Other devices" -msgstr "" +msgstr "Andere Geräte" msgid "Click to capture mouse" msgstr "Klicken zum Einfangen des Mauszeigers" @@ -949,16 +949,16 @@ msgid "Welcome to 86Box!" msgstr "Willkommen bei 86Box!" msgid "Internal device" -msgstr "Interne Gerät" +msgstr "Internes Gerät" msgid "&File" -msgstr "" +msgstr "&Datei" msgid "&New machine..." -msgstr "" +msgstr "&Neue Maschine" msgid "&Check for updates..." -msgstr "" +msgstr "&Auf Aktualisierungen prüfen..." msgid "Exit" msgstr "Beenden" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pausieren" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Strg+Alt+Entf" msgid "Press Ctrl+Alt+Del" msgstr "Strg+Alt+Entf drücken" @@ -1069,208 +1069,208 @@ msgid "Hard reset" msgstr "Kaltstart" msgid "Force shutdown" -msgstr "" +msgstr "Abschaltung erzwingen" msgid "Start" -msgstr "" +msgstr "Einschalten" msgid "Not running" -msgstr "" +msgstr "Läuft nicht" msgid "Running" -msgstr "" +msgstr "Läuft" msgid "Paused" -msgstr "" +msgstr "Pausiert" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Wartend" msgid "Powered Off" -msgstr "" +msgstr "Ausgeschaltet" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n laufend" -msgid "total" +msgid "%n paused" +msgstr "%n pausiert" + +msgid "%n waiting" +msgstr "%n wartend" + +msgid "%1 total" +msgstr "%1 insgesamt" + +msgid "VMs: %1" msgstr "" msgid "System Directory:" -msgstr "" +msgstr "Systemverzeichnis" msgid "Choose directory" -msgstr "" +msgstr "Verzeichnis auswählen" msgid "Choose configuration file" -msgstr "" +msgstr "Konfigurationsdatei auswählen" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box Konfigurationsdateien (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Lesen der Konfiguration fehlgeschlagen" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Die ausgewählte Konfigurationsdatei konnte nicht eingelesen werden: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Benutze reguläre Ausdrücke in der Suche" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 Maschinen sind aktuell aktiv. Bist du sicher, dass du den VM Manager trotzdem schließen möchtest?" msgid "Add new system wizard" -msgstr "" +msgstr "Assistent für ein neues System" msgid "Introduction" -msgstr "" +msgstr "Einleitung" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Hilft dir ein neues System zu 86Box hinzuzufügen" msgid "New configuration" -msgstr "" +msgstr "Neue Konfiguration" msgid "Complete" -msgstr "" +msgstr "Abgeschlossen" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Der Assistent wird nun die Konfiguration für das neue System starten." msgid "Use existing configuration" -msgstr "" +msgstr "Vorhande Konfiguration benutzen" msgid "Type some notes here" -msgstr "" +msgstr "Trage hier Notizen ein" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Füge den Inhalt einer bereits existierenden Konfigurationsdatei in das untere Feld ein." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Lade Konfiguration aus Datei" msgid "System name" -msgstr "" +msgstr "Systemname" msgid "System name:" -msgstr "" +msgstr "Systemname:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Der Name des Systems darf bestimmte Zeichen nicht enthalten" msgid "System name already exists" -msgstr "" +msgstr "Das System existiert bereits" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Bitte gebe ein Verzeichnis für das System ein" msgid "Directory does not exist" -msgstr "" +msgstr "Das Verzeichnis existiert nicht" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Ein neues Systemverzeichnis wird in dem oben angegebenen Verzeichnis erstellt werden" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Systemverzeichnis:" msgid "System name and location" -msgstr "" +msgstr "Systemname und Verzeichnis" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Gebe einen Namen für das System ein und wähle ein Verzeichnis" msgid "Enter the name of the system" -msgstr "" +msgstr "Gebe den Namen des Systems ein" msgid "Please enter a system name" -msgstr "" +msgstr "Bitte gebe einen Systemnamen ein" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Anzeigename (optional):" msgid "Display name:" -msgstr "" +msgstr "Anzeigename:" msgid "Set display name" -msgstr "" +msgstr "Anzeigename festlegen" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Gebe den neuen Anzeigenamen ein (leer lassen zum Zurücksetzen)" msgid "Change &display name..." -msgstr "" +msgstr "&Anzeigename ändern" msgid "Context Menu" -msgstr "" +msgstr "Kontextmenü" msgid "&Open folder..." -msgstr "" +msgstr "&Ordner öffnen" -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "D&ruckerausgabe öffnen..." msgid "Set &icon..." -msgstr "" +msgstr "&Symbol setzen" msgid "Select an icon" -msgstr "" +msgstr "Wähle ein Symbol aus" msgid "C&lone..." -msgstr "" +msgstr "K&lonen..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuelle Maschine \"%1\" (%2) wird geklont werden nach:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Das Verzeichnis %1 existiert bereits" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Folgene Zeichen können nicht für den Namen verwendet werden: %1" msgid "Clone" -msgstr "" +msgstr "Klonen" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Fehler bei Erstellung des Verzeichnisses für die zu klonende VM" msgid "Failed to clone VM." -msgstr "" +msgstr "Klonen der VM fehlgeschlagen." msgid "Directory in use" -msgstr "" +msgstr "Verzeichnis bereits in Benutzung" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Das ausgewählte Verzeichnis wird bereits benutzt. Bitte wähle ein anderes Verzeichnis." msgid "Create directory failed" -msgstr "" +msgstr "Erstellung des Verzeichnisses fehlgeschlagen" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Das Verzeichnis für das neue System könnte nicht erstellt werden" msgid "Configuration write failed" -msgstr "" +msgstr "Schreiben der Konfiguration fehlgeschlagen" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Die Konfigurationsdatei %1 konnte nicht zum Schreiben geöffnet werden" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Fehler beim Hinzufügen des Systems" msgid "Remove directory failed" -msgstr "" +msgstr "Fehler beim Entfernen des Verzeichnisses" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Eine Dateien im Verzeichnis der Maschine konnten nicht gelöscht werden, bitte lösche diese manuell." msgid "Build" msgstr "" @@ -1278,50 +1278,56 @@ msgstr "" msgid "Version" msgstr "" +msgid "An update to 86Box is available: %1 %2" +msgstr "Eine Aktualisierung für 86Box is verfügbar: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Bei der Suche nach Aktualisierungen trat ein fehler auf: %1" + msgid "An update to 86Box is available!" -msgstr "" +msgstr "Eine Aktualisierung für 86Box ist verfügbar!" msgid "Warning" -msgstr "" +msgstr "Warnung" msgid "&Kill" -msgstr "" +msgstr "&Beenden erzwingen" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Das Erzwingen des Beendens einer virtuellen Maschine kann zu Datenverlust führen. Führe dies nur durch wenn der 86Box sich aufgehangen hat.\n\nBist du sicher das du das Beenden der virtuellen Maschine erzwingen möchtest \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Löschen" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Bist du sicher das du die virtuelle Maschine inklusive all ihrer Dateien löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden!" msgid "Show &config file" -msgstr "" +msgstr "&Konfigurationsdatei anzeigen" msgid "No screenshot" -msgstr "" +msgstr "Keine Bildschirmaufnahme" msgid "Search" -msgstr "" +msgstr "Suche" msgid "Searching for VMs..." -msgstr "" +msgstr "Suche nach VMs..." msgid "Found %1" -msgstr "" +msgstr "Gefunden %1" msgid "System" msgstr "" msgid "Storage" -msgstr "" +msgstr "Speicherplatz" msgid "Disk %1: " msgstr "" msgid "No disks" -msgstr "" +msgstr "Keine Disks" msgid "Audio" msgstr "" @@ -1626,9 +1632,6 @@ msgstr "Liste die MCA-Geräte:" msgid "&Tablet tool" msgstr "Tablet-Werkzeug" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Über &Qt" @@ -1639,10 +1642,10 @@ msgid "Show non-&primary monitors" msgstr "Nicht-primäre Monitore anzeigen" msgid "Open screenshots &folder..." -msgstr "Ordner „screenshots“ öffnen..." +msgstr "Ordner „screenshots“ ö&ffnen..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Vollbild-Streckmodus aktivieren, wenn das Fenster maximiert ist" +msgstr "Vollbild-S&treckmodus aktivieren, wenn das Fenster maximiert ist" msgid "&Cursor/Puck" msgstr "&Mauszeiger/Puck" @@ -1672,13 +1675,13 @@ msgid "Null Driver" msgstr "Nulltreiber" msgid "NIC:" -msgstr "" +msgstr "Netzwerkkarte:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Netzwerkkarte %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Netzwerkkarte %1 (%2) %3" msgid "Render behavior" msgstr "Rendering-Verhalten" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Netzwerkkarte 1" @@ -1768,7 +1771,7 @@ msgid "Adapter:" msgstr "Adapter:" msgid "VDE Socket:" -msgstr "VDE Port:" +msgstr "VDE Anschluss:" msgid "86Box Unit Tester" msgstr "86Box-Gerätetester" @@ -1789,7 +1792,7 @@ msgid "Serial port passthrough 4" msgstr "Serielle Schnittstelle 4 durchreichen" msgid "Renderer &options..." -msgstr "Renderer-Optionen..." +msgstr "Renderer-&Optionen..." msgid "PC/XT Keyboard" msgstr "PC/XT-Tastatur" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Composite" +msgid "True color" +msgstr "True color" + msgid "Old" msgstr "Alt" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo Grafik" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMUs)" @@ -2644,7 +2650,7 @@ msgid "High performance impact" msgstr "Hohe Auswirkung auf die Leistung" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] RAM-Disk (maximale Geschwindigkeit)" +msgstr "[Generisch] RAM-Disk (maximale Geschwindigkeit)" msgid "[Generic] 1989 (3500 RPM)" msgstr "[Generisch] 1989 (3500 U/min)" @@ -2788,7 +2794,7 @@ msgid "Toggle fullscreen" msgstr "Vollbild umschalten" msgid "Screenshot" -msgstr "Screensho" +msgstr "Bildschirmaufnahme" msgid "Release mouse pointer" msgstr "Mauszeiger freigeben" @@ -2823,29 +2829,26 @@ msgstr "Hub-Modus" msgid "Hostname:" msgstr "Hostname:" -msgid "ISA RTC" +msgid "ISA RAM:" msgstr "" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" +msgid "ISA ROM:" msgstr "" msgid "&Wipe NVRAM" -msgstr "" +msgstr "NVRAM leeren" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Dadurch werden alle NVRAM-Dateien (und zugehörige Dateien) der virtuellen Maschine im Unterverzeichnis \"nvr\" werden gelöscht. Gegebenenfalls müssen die BIOS-Einstellungen (und möglicherweise auch die Einstellungen anderer Geräte innerhalb der VM) erneut konfiguriert werden. Möchtest du wirklich den gesamten NVRAM-Inhalt der virtuellen Maschine \"%1\" löschen?" msgid "Success" -msgstr "" +msgstr "Erfolgreich" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Der NVRAM-Inhlat der virtuellen Maschine wurde erfolgreich geleert \"%1\"" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Beim Leeren des NVRAMs der virtuellen Maschine ist ein Fehler aufgetreten \"%1\"" msgid "%1 VM Manager" msgstr "" @@ -2854,61 +2857,100 @@ msgid "%n disk(s)" msgstr "" msgid "Unknown Status" -msgstr "" +msgstr "Unbekannter Status" msgid "No Machines Found!" -msgstr "" +msgstr "Keine Maschinen gefunden!" msgid "Check for updates on startup" -msgstr "" +msgstr "Beim Programmstart auf Aktualisierungen prüfen" msgid "Unable to determine release information" -msgstr "" +msgstr "Die Veröffentlichungsinformationen können nicht ermittelt werden." msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Bei der Prüfung auf Aktualisierungen trat ein Fehler auf:\n\n%1\n\nBitte versuche es später erneut." msgid "Update check complete" -msgstr "" +msgstr "Prüfung auf Aktualisierungen abgeschlossen" + +msgid "stable" +msgstr "Stabil" + +msgid "beta" +msgstr "Beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Du nutzt bereits die aktuelleste %1 Version von 86Box: %2" msgid "version" -msgstr "" +msgstr "Version" msgid "build" -msgstr "" +msgstr "Build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Du nutzt bereits die aktuelleste version %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Version %1 ist nun verfügbar." + +msgid "You are currently running build %1." +msgstr "Du nutzt aktuell Build %1." + +msgid "Build %1 is now available." +msgstr "Build %1 ist nun verfügbar." + +msgid "Would you like to visit the download page?" +msgstr "Möchtest du die Download-Webseite besuchen?" msgid "Visit download page" -msgstr "" +msgstr "Download-Webseite besuchen" msgid "Update check" -msgstr "" +msgstr "Aktualisierungsprüfung" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Prüfe auf Aktualisierungen..." msgid "86Box Update" -msgstr "" +msgstr "86Box Aktualisierung" msgid "Release notes:" -msgstr "" +msgstr "Versionshinweise:" -#~ msgid "HD Controller:" -#~ msgstr "HDD-Controller:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP-Laufwerke:" +msgid "Virtual machine crash" +msgstr "Absturz der virtuellen Maschine" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Der Prozess der virtuellen Maschine \"%1\" wurde unerwartet mit dem Exit-Code %2 beendet." -#~ msgid "ZIP images" -#~ msgstr "ZIP-Abbilder" +msgid "The system will not be added." +msgstr "Das System wird nicht hinzugefügt werden." + +msgid "&Update mouse every CPU frame" +msgstr "&Maus bei jedem CPU-Frame aktualisieren" + +msgid "Hue" +msgstr "Farbton" + +msgid "Saturation" +msgstr "Sättigung" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Helligkeit" + +msgid "Sharpness" +msgstr "Schärfe" + +msgid "&CGA composite settings..." +msgstr "Optionen des &CGA-Composite-Modus..." + +msgid "CGA composite settings" +msgstr "Optionen des CGA-Composite-Modus" diff --git a/src/qt/languages/en-GB.po b/src/qt/languages/en-GB.po index 9802d06f9..ba9f30421 100644 --- a/src/qt/languages/en-GB.po +++ b/src/qt/languages/en-GB.po @@ -74,3 +74,6 @@ msgstr "Colour" msgid "Failed to initialize Vulkan renderer." msgstr "Failed to initialise Vulkan renderer." + +msgid "True color" +msgstr "True colour" diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po index b99d96819..021cc36ab 100644 --- a/src/qt/languages/es-ES.po +++ b/src/qt/languages/es-ES.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Pausa" msgid "Pause" -msgstr "" +msgstr "Pausa" msgid "Re&sume" -msgstr "" +msgstr "Co&ntinuar" msgid "E&xit" msgstr "&Salir" @@ -46,7 +46,7 @@ msgid "Hide &toolbar" msgstr "Ocultar &barra de herramientas" msgid "&Resizeable window" -msgstr "&Ventana redimensionable" +msgstr "Ven&tana redimensionable" msgid "R&emember size && position" msgstr "&Recordar tamaño y posición" @@ -57,9 +57,6 @@ msgstr "Re&nderizador" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "E&specificar dimensiones..." -msgid "F&orce 4:3 display ratio" -msgstr "F&orzar ratio 4:3" +msgid "Force &4:3 display ratio" +msgstr "Forzar ratio &4:3" msgid "&Window scale factor" msgstr "&Factor de escalado de ventana" @@ -121,7 +118,7 @@ msgid "&Fullscreen" msgstr "&Pantalla completa" msgid "Fullscreen &stretch mode" -msgstr "Escalado pantalla completa" +msgstr "Esca&lado pantalla completa" msgid "&Full screen stretch" msgstr "&Estirar" @@ -138,8 +135,8 @@ msgstr "&Escalado valor entero" msgid "4:&3 Integer scale" msgstr "Escalado valor entero 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "&Configuraciones EGA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Configuraciones EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Monitor VGA invertido" @@ -151,16 +148,16 @@ msgid "RGB &Color" msgstr "RGB &Color" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (sin marrón)" msgid "&RGB Grayscale" msgstr "RGB &Grises" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Monitor a colores RGBI genérico" msgid "&Amber monitor" -msgstr "Monitor &Ámbar" +msgstr "Monitor Ámb&ar" msgid "&Green monitor" msgstr "Monitor &Verde" @@ -181,7 +178,7 @@ msgid "&Average" msgstr "&Media" msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" -msgstr "&Overscan CGA/PCjr/Tandy/EGA/(S)VGA" +msgstr "Overscan CGA/PCjr/Tandy/E&GA/(S)VGA" msgid "Change contrast for &monochrome display" msgstr "Cambiar contraste para pantalla &monocroma" @@ -196,13 +193,13 @@ msgid "&Settings..." msgstr "&Configuraciones..." msgid "Settings..." -msgstr "" +msgstr "Configuraciones..." msgid "&Update status bar icons" msgstr "&Actualizar iconos en barra de estado" msgid "Take s&creenshot" -msgstr "Tomar c&aptura" +msgstr "Tomar cap&tura" msgid "S&ound" msgstr "S&onido" @@ -223,7 +220,7 @@ msgid "End trace" msgstr "Terminar traza" msgid "&Help" -msgstr "&Ayuda" +msgstr "Ay&uda" msgid "&Documentation..." msgstr "&Documentación..." @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Configurar" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "Tipo de CPU:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Recompilador Dinámico" msgid "CPU frame size" -msgstr "" +msgstr "Tamaño de blocos de CPU" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Blocos más grandes (menos suave)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Blocos más pequeños (más suave)" msgid "Video:" msgstr "Vídeo:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Gráficos XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Adaptador de gráficos de pantalla IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Teclado:" msgid "Keyboard" -msgstr "" +msgstr "Teclado" msgid "Mouse:" msgstr "Ratón:" msgid "Mouse" -msgstr "" +msgstr "Ratón" msgid "Joystick:" msgstr "Mando:" msgid "Joystick" -msgstr "" +msgstr "Mando" msgid "Joystick 1..." msgstr "Mando 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Dispositivo MIDI de entrada:" msgid "MIDI Out:" -msgstr "" +msgstr "Salida MIDI" msgid "Standalone MPU-401" msgstr "MPU-401 independiente" @@ -519,6 +516,9 @@ msgstr "Dispositivo LPT3:" msgid "LPT4 Device:" msgstr "Dispositivo LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA de ECP del LPT interno:" + msgid "Serial port 1" msgstr "Puerto serie 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Controladora FD:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Controladora CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Tercera controladora IDE" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Cuarta controladora IDE" msgid "Hard disk" -msgstr "" +msgstr "Disco duro" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Discos duros:" msgid "Firmware Version" -msgstr "" +msgstr "Versión de firmware" msgid "&New..." msgstr "&Nuevo..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Unidades MO:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Discos removibles:" msgid "Removable disk drives:" -msgstr "" +msgstr "Unidades de disco removible:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Expansión de Memoria ISA" msgid "ISA ROM Cards" -msgstr "" +msgstr "Tarjetas ROM ISA" msgid "Card 1:" msgstr "Tarjeta 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Tarjeta 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Tarjeta ROM ISA genérica" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Tarjeta ROM ISA genérica doble" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Tarjeta ROM ISA genérica cuádruple" msgid "ISABugger device" msgstr "Dispositivo ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Velocidad" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Disco removible %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Disco removible %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Imagenes de disco removible" msgid "Image %1" -msgstr "" +msgstr "Imagen %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box no pudo encontrar ninguna imagen ROM usable.\n\nPor favor descargue un conjunte de ROMs y extráigalo en el directorio \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Puertos (COM y LPT)" msgid "Ports" -msgstr "" +msgstr "Puertos" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Puertos serie:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Puertos paralelos:" msgid "Storage controllers" msgstr "Controladoras de Almacenamiento" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Discos Duros" msgid "Disks:" -msgstr "" +msgstr "Discos:" msgid "Floppy:" -msgstr "" +msgstr "Disquete:" msgid "Controllers:" -msgstr "" +msgstr "Controladoras:" msgid "Floppy & CD-ROM drives" msgstr "Disquetes y unidades de CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Otros periféricos" msgid "Other devices" -msgstr "" +msgstr "Otros dispositivos" msgid "Click to capture mouse" msgstr "Haga click para capturar el ratón" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Mando(s) de juegos de 2 botones" msgid "2-button flight yoke" -msgstr "" +msgstr "Yugo de vuelo de 2 botones" msgid "4-button gamepad" -msgstr "" +msgstr "Mando de juegos de 4 botones" msgid "4-button flight yoke" -msgstr "" +msgstr "Yugo de vuelo de 4 botones" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Yugo de vuelo de 2 botones con acelerador" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Yugo de vuelo de 4 botones con acelerador" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volante Win95 (de 3 ejes, 4 botones)" msgid "None" msgstr "Ninguno" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Dispositivo interno" msgid "&File" -msgstr "" +msgstr "&Archivo" msgid "&New machine..." -msgstr "" +msgstr "&Nueva máquina..." msgid "&Check for updates..." -msgstr "" +msgstr "&Verifica actualizaciones..." msgid "Exit" msgstr "Salir" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pausar la ejecución" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Pulsar Ctrl+Alt+Supr" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Hard reset" msgid "Force shutdown" -msgstr "" +msgstr "Apagqar forzadamente" msgid "Start" -msgstr "" +msgstr "Iniciar" msgid "Not running" -msgstr "" +msgstr "No en ejecución" msgid "Running" -msgstr "" +msgstr "En ejeución" msgid "Paused" -msgstr "" +msgstr "En pausa" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "En espera" msgid "Powered Off" -msgstr "" +msgstr "Apagado" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n en ejecución" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n en pausa" + +msgid "%n waiting" +msgstr "%n en espera" + +msgid "%1 total" +msgstr "%1 total" + +msgid "VMs: %1" +msgstr "MV: %1" msgid "System Directory:" -msgstr "" +msgstr "Directório de sistema:" msgid "Choose directory" -msgstr "" +msgstr "Escoger disctorio" msgid "Choose configuration file" -msgstr "" +msgstr "Escoger archivo de configuración" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Archivos de configuración de 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Error al leer" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "No fúe posible abrir el archivo de configuración seleccionado para leer: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Utilizar expresiones regulares en la caja de búsqueda" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 máquina(s) son activas en este momento. ¿Está seguro de que quiere salir del administrador de MV?" msgid "Add new system wizard" -msgstr "" +msgstr "Asistente para la adición de un nuevo sistema" msgid "Introduction" -msgstr "" +msgstr "Introducción" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Esto le ayudará a añadir un nuevo sistema a 86Box." msgid "New configuration" -msgstr "" +msgstr "Nueva configuración" msgid "Complete" -msgstr "" +msgstr "Completar" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "El asistente agora ejecutará la configuración para el nuevo sistema." msgid "Use existing configuration" -msgstr "" +msgstr "Utilizar configuración existente" msgid "Type some notes here" -msgstr "" +msgstr "Escribir algunas notas aquí" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Pegar el contenido del archivo de configuración existente en el cuadro que aparece a continuación." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Cargar la configuración desde un archivo" msgid "System name" -msgstr "" +msgstr "Nombre del sistema" msgid "System name:" -msgstr "" +msgstr "Nombre del sistema:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "El nombre del sistema no puede contener algunos carácteres" msgid "System name already exists" -msgstr "" +msgstr "El nombre del sistema ya existe" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Por favor, escriba un directório para el sistema" msgid "Directory does not exist" -msgstr "" +msgstr "El directório no existe" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Un nuevo directório para el sistema será creado en el directório escogido en cima" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Ubicación del sistema:" msgid "System name and location" -msgstr "" +msgstr "Nombre y ubicaciónd el sistema" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Escribir el nombre del sistema y escoger la ubicación" msgid "Enter the name of the system" -msgstr "" +msgstr "Escribir el nombre del sistema" msgid "Please enter a system name" -msgstr "" +msgstr "Por favor, entre un nome del sistema" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Nombre mostrado (opcional):" msgid "Display name:" -msgstr "" +msgstr "Nombre mostrado:" msgid "Set display name" -msgstr "" +msgstr "Establecer nombre mostrado" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Escribir el nuevo nombre mostrado (vacío para restablecer)" msgid "Change &display name..." -msgstr "" +msgstr "Cambiar nombre &mostrado..." msgid "Context Menu" -msgstr "" +msgstr "Menú de contexto" msgid "&Open folder..." -msgstr "" +msgstr "&Abrir carpeta..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Abrir bandeja de la &impresora..." msgid "Set &icon..." -msgstr "" +msgstr "Establecer &icono..." msgid "Select an icon" -msgstr "" +msgstr "Escoger un icono" msgid "C&lone..." -msgstr "" +msgstr "C&lonar" msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "La máquina virtual \"%1\" (%2) será clonada para:" msgid "Directory %1 already exists" -msgstr "" +msgstr "El directório %1 ya existe" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "No se puede usar los siguientes carácteres en el nombre: %1" msgid "Clone" -msgstr "" +msgstr "Cloner" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Error al crear el directório para la MV clonada" msgid "Failed to clone VM." -msgstr "" +msgstr "Error al clonar la VM." msgid "Directory in use" -msgstr "" +msgstr "Directório en uso" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "El directório escogido ya está en uso. Por favor, seleccione otro directório." msgid "Create directory failed" -msgstr "" +msgstr "Error al crear el directório" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "No fué posible crear el directório para el nuevo sistema" msgid "Configuration write failed" -msgstr "" +msgstr "Error al escrbir la configuración" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "No fué posible abrir el archivo de configuración en %1 para escribir" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Error al añadir el sistema" msgid "Remove directory failed" -msgstr "" +msgstr "Error al remover el directório" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "No fué posible borrar algunos archivos en el directório de la máquina. Por favor, borrelos manualmente." msgid "Build" -msgstr "" +msgstr "Compilación" msgid "Version" -msgstr "" +msgstr "Versión" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Está disponible una actualización para 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Ha ocurrido un error al verificar las actualizacioens: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "¡Una actualización para 86Box está disponible!" msgid "Warning" -msgstr "" +msgstr "Advertencia" msgid "&Kill" -msgstr "" +msgstr "&Terminar forzadamente" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Terminar forzadamente a la máquina virtual puede cusar la pérdida de datos. Lo haga solamente si el processo de 86Box se bloqueó.\n\n¿De verdad quiere terminar forzadamente a la máquina virtual \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Borrar" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "¿De verdad quiere borrar la máquina virtual \"%1\" y todos sus archivos? ¡Esta acción no se puede deshacer!" msgid "Show &config file" -msgstr "" +msgstr "Mostrar archivo de &configuración" msgid "No screenshot" -msgstr "" +msgstr "Sin captura de pantalla" msgid "Search" -msgstr "" +msgstr "Buscar" msgid "Searching for VMs..." -msgstr "" +msgstr "Buscar para MV..." msgid "Found %1" -msgstr "" +msgstr "%1 encontrada" msgid "System" -msgstr "" +msgstr "Sistema" msgid "Storage" -msgstr "" +msgstr "Almacenamiento" msgid "Disk %1: " -msgstr "" +msgstr "Disco" msgid "No disks" -msgstr "" +msgstr "Sin disco" msgid "Audio" -msgstr "" +msgstr "Sonido" msgid "Audio:" -msgstr "" +msgstr "Sonido:" msgid "ACPI shutdown" msgstr "Parada ACPI" @@ -1594,7 +1600,7 @@ msgid "Fast" msgstr "Rápida" msgid "&Auto-pause on focus loss" -msgstr "&Pausa automática al perder el foco" +msgstr "Pa&usa automática al perder el foco" msgid "WinBox is no longer supported" msgstr "WinBox ya no recibe soporte" @@ -1626,9 +1632,6 @@ msgstr "Lista de dispositivos MCA:" msgid "&Tablet tool" msgstr "Herramienta de tableta" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Acerca de &Qt" @@ -1636,13 +1639,13 @@ msgid "&MCA devices..." msgstr "Dispositivos MCA ..." msgid "Show non-&primary monitors" -msgstr "Mostrar monitores no primarios" +msgstr "Mostrar monitores no prim&arios" msgid "Open screenshots &folder..." -msgstr "Abrir la carpeta screenshots..." +msgstr "Abrir la ca&rpeta screenshots..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Usar escalado pantalla completa en modalidad maximizada" +msgstr "&Usar escalado pantalla completa en modalidad maximizada" msgid "&Cursor/Puck" msgstr "&Cursor/Puck" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Controlador nulo" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Tarjeta de red 1" @@ -1789,25 +1792,25 @@ msgid "Serial port passthrough 4" msgstr "Paso de puerto serie 4" msgid "Renderer &options..." -msgstr "Opciones del renderizador..." +msgstr "Opc&iones del renderizador..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Teclado PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Teclado AT" msgid "AX Keyboard" -msgstr "" +msgstr "Teclado AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Teclado PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Teclado PS/55" msgid "Keys" -msgstr "" +msgstr "Teclas" msgid "Logitech/Microsoft Bus Mouse" msgstr "Ratón de bus Logitech/Microsoft" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Ratón serie Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Ratón de bus Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Ratón serie Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Ratón serie Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Ratón serie Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Ratón PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Ratón PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (serie)" msgid "Default Baud rate" -msgstr "" +msgstr "Velocidad de transmisión pretederminada" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Módem estándar compatible con Hayes" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Dispositivo de entrada MIDI" msgid "BIOS file" -msgstr "" +msgstr "Archivo de BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Archivo de BIOS (ROM no. 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Archivo de BIOS (ROM no. 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Archivo de BIOS (ROM no. 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Archivo de BIOS (ROM no. 4)" msgid "BIOS address" msgstr "Dirección de BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Dirección de BIOS (ROM no. 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Dirección de BIOS (ROM no. 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Dirección de BIOS (ROM no. 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Dirección de BIOS (ROM no. 4)" msgid "Enable BIOS extension ROM Writes" msgstr "Habilitar escrituras para el ROM de extensión de BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Habilitar escrituras para el ROM de extensión de BIOS (ROM no. 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Habilitar escrituras para el ROM de extensión de BIOS (ROM no. 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Habilitar escrituras para el ROM de extensión de BIOS (ROM no. 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Habilitar escrituras para el ROM de extensión de BIOS (ROM no. 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Base del búfer de trama lineal" msgid "Address" msgstr "Dirección" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ del puerto serie" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ del puerto paralelo" msgid "BIOS Revision" msgstr "Revisión de BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Versión de BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Idioma de BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Unidad de expansión IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "BASIC de casete IBM" msgid "Translate 26 -> 17" msgstr "Traducir 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Tamaño de BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Tamaño de BIOS (ROM no. 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Tamaño de BIOS (ROM no. 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Tamaño de BIOS (ROM no. 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Tamaño de BIOS (ROM no. 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Mapear a C0000-C7FFF como UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Método de interpolación" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Carga dinámica de muestras" msgid "Reverb Output Gain" msgstr "Ganancia de salida de reverberación" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Habilitar puerto de juegos" msgid "SID Model" -msgstr "" +msgstr "Modelo de SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Fuerza del filtro de SID" msgid "Surround module" msgstr "Módulo Surround" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Dirección del SB" msgid "Adlib Address" -msgstr "" +msgstr "Dirección del Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Uitilizar la configuración del EEPROM" msgid "WSS IRQ" msgstr "IRQ de WSS" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Mezclar" msgid "Font" -msgstr "" +msgstr "Fuente" msgid "Bilinear filtering" msgstr "Filtrado bilineal" msgid "Video chroma-keying" -msgstr "" +msgstr "Clave cromática para vídeo" msgid "Dithering" msgstr "Dithering" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Modo EMS" msgid "EMS Address" -msgstr "" +msgstr "Dirección de EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Dirección de EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Dirección de EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Dirección de EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Dirección de EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Dirección de EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Habilitar EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Habilitar EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Habilitar EMS 2" msgid "Address for > 2 MB" msgstr "Dirección para > 2 MB" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "Cinco + rueda" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Cinco + 2 ruedas" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 serie / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Compuesto" +msgid "True color" +msgstr "Verdadero color" + msgid "Old" msgstr "Viejo" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Interpolación lineare" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Tiene conjunto de carácteres 8x8 secundário" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Tiene tarjeta hija Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Contraste monocromo alternativo" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Gris" msgid "Grayscale" -msgstr "" +msgstr "Escala de gris" msgid "Color" msgstr "Color" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs más nuevo" msgid "Apply overscan deltas" -msgstr "" +msgstr "Aplicar deltas de overscan" msgid "Mono Interlaced" -msgstr "" +msgstr "Monocromo entrelazado" msgid "Mono Non-Interlaced" msgstr "Monocromo no entrelazado" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Gráficos 3dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 unidades TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Tubería con nombre (servidor)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Tubería con nombre (cliente)" msgid "Host Serial Passthrough" msgstr "Paso del puerto serie del host" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "Alto impact en el rendimiento" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Disco RAM (velocidad máxima)" +msgstr "[Genérico] Disco RAM (velocidad máxima)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Genérico] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Genérico] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Genérico] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Genérico] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Genérico] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Genérico] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Genérico] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" msgstr "Clon IBM 8514/A (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Fabricante" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Expansión de Memoria Generica PC/XT" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "Las fuentes TrueType en el directorio \"roms/printer/fonts\" son necesarias para la emulación de la impresora matricial ESC/P genérica." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Inhibir teclas multimedia" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Pedir confirmación antes de guardar la configuración" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Pedir confirmación antes del hard reset" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Pedir confirmación antes de salir" msgid "Options" -msgstr "" +msgstr "Opciones" msgid "Model" -msgstr "" +msgstr "Modelo" msgid "Model:" -msgstr "" +msgstr "Modelo:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Error al inicializar el renderizador Vulkan." msgid "GLSL Error" -msgstr "" +msgstr "Error de GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "No fué posible cargar el shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Se requiere la versión 3.0 o superior de OpenGL. La versión actual de GLSL es %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Error al cargar la textura: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Error al compilar el shader:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Programa no vinculado:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Administrador de shaders" msgid "Shader Configuration" -msgstr "" +msgstr "Configuración de shaders" msgid "Add" -msgstr "" +msgstr "Añadir" msgid "Move up" -msgstr "" +msgstr "Mover para arriba" msgid "Move down" -msgstr "" +msgstr "Mover para abajo" msgid "Could not load file %1" -msgstr "" +msgstr "Error al cargar el archivo %1" msgid "Key Bindings:" -msgstr "" +msgstr "Atajos de teclado:" msgid "Action" -msgstr "" +msgstr "Acción" msgid "Keybind" -msgstr "" +msgstr "Atajo" msgid "Clear binding" -msgstr "" +msgstr "Limpiar atajo" msgid "Bind" -msgstr "" +msgstr "Vincular" msgid "Bind Key" -msgstr "" +msgstr "Vincular tecla" msgid "Enter key combo:" -msgstr "" +msgstr "Escribir combinación de teclas:" msgid "Bind conflict" -msgstr "" +msgstr "Conflicto entre atajos" msgid "This key combo is already in use." -msgstr "" +msgstr "Esta combinación de teclas ya está en uso." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Enviar Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Enviar Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Alternar pantalla completa" msgid "Screenshot" -msgstr "" +msgstr "Captura de pantalla" msgid "Release mouse pointer" -msgstr "" +msgstr "Soltar el puntero del ratón" msgid "Toggle pause" -msgstr "" +msgstr "Alternar pausa" msgid "Toggle mute" -msgstr "" +msgstr "Alternar silencio" msgid "Text files" -msgstr "" +msgstr "Archivos de texto" msgid "ROM files" -msgstr "" +msgstr "Archivos de ROM" msgid "SoundFont files" -msgstr "" +msgstr "Archivos SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Conmutador local" msgid "Remote Switch" -msgstr "" +msgstr "Conmutador remoto" msgid "Switch:" -msgstr "" +msgstr "Conmutador:" msgid "Hub Mode" -msgstr "" +msgstr "Modo de concentrador" msgid "Hostname:" -msgstr "" +msgstr "Nombre de host:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Limpiar el NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Estó borrará todos los archivos de NVRAM (y relacionados) de la máquina virtual ubicados en el subdirectório \"nvr\". Tendrá que reconifigurar la definiciones del BIOS (y talvez de otros dispositivoes dentro de la MV) otra vez si aplicable.\n\n¿Está seguro de que quierere limpiar todos los contenidos de la NVRAM de la máquina virtual \"%1\"?" msgid "Success" -msgstr "" +msgstr "Éxito" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Los contenidos de la NVRAM de la máquina virtual \"%1\" han sido limpiadas con éxito" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Ha ocurrido un error al intentar de limpiar los contenidos de la NVRAM de la máquina virtual \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Administrador de MV de %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disco(s)" msgid "Unknown Status" -msgstr "" +msgstr "Estado desconocido" msgid "No Machines Found!" -msgstr "" +msgstr "¡No fueron encontradas máquinas!" msgid "Check for updates on startup" -msgstr "" +msgstr "Contorlar actualizaciones al iniciar" msgid "Unable to determine release information" -msgstr "" +msgstr "No fué posible determinar informaciones de la versión" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Ha ocurrido un error al verificar actualizaciones:\n\n%1\n\nPor favor, intente otra vez más tarde." msgid "Update check complete" -msgstr "" +msgstr "Verificación de actualizaciones completada" + +msgid "stable" +msgstr "estable" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Está ejecutando la última versión %1 de 86Box: %2" msgid "version" -msgstr "" +msgstr "versión" msgid "build" -msgstr "" +msgstr "compilación" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Actualmente está a ejecutar la versión %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "La versión %1 está ahora disponible." + +msgid "You are currently running build %1." +msgstr "Actualmente está a ejecutar la compialación %1." + +msgid "Build %1 is now available." +msgstr "La compilación %1 está ahora disponible." + +msgid "Would you like to visit the download page?" +msgstr "¿Quería visitar a la página de descargas?" msgid "Visit download page" -msgstr "" +msgstr "Visitar a la página de descargas" msgid "Update check" -msgstr "" +msgstr "Verificación de actualizaciones" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Verificando las actualizaciones..." msgid "86Box Update" -msgstr "" +msgstr "Actualización de 86Box" msgid "Release notes:" -msgstr "" +msgstr "Notas de versión:" -#~ msgid "HD Controller:" -#~ msgstr "Controladora HD:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Unidades ZIP:" +msgid "Virtual machine crash" +msgstr "Terminación inesperada de la máquina virtual" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "El proceso de la máquina virtual \"%1\" terminó inesperadamente con el código de salida %2." -#~ msgid "ZIP images" -#~ msgstr "Imagenes ZIP" +msgid "The system will not be added." +msgstr "El sistema no será añadido." + +msgid "&Update mouse every CPU frame" +msgstr "&Actualiza el estado del ratón en cada bloco de CPU" + +msgid "Hue" +msgstr "Tono" + +msgid "Saturation" +msgstr "Saturación" + +msgid "Contrast" +msgstr "Contraste" + +msgid "Brightness" +msgstr "Brillo" + +msgid "Sharpness" +msgstr "Nitidez" + +msgid "&CGA composite settings..." +msgstr "Configuración del modo compuesto &CGA..." + +msgid "CGA composite settings" +msgstr "Configuración del modo compuesto CGA" diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po index ab630dcc0..cdce435db 100644 --- a/src/qt/languages/fi-FI.po +++ b/src/qt/languages/fi-FI.po @@ -57,9 +57,6 @@ msgstr "&Renderöijä" msgid "&Qt (Software)" msgstr "&Qt (ohjelmistopohjainen)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Määritä koko..." -msgid "F&orce 4:3 display ratio" -msgstr "Pakota 4:3-näyttösuhde" +msgid "Force &4:3 display ratio" +msgstr "Pakota &4:3-kuvasuhde" msgid "&Window scale factor" msgstr "&Ikkunan kokokerroin" @@ -138,7 +135,7 @@ msgstr "&Kokonaislukuskaalaus" msgid "4:&3 Integer scale" msgstr "4:&3 Kokonaislukuskaalaus" -msgid "E&GA/(S)VGA settings" +msgid "EGA/(S)&VGA settings" msgstr "&EGA/(S)VGA-asetukset" msgid "&Inverted VGA monitor" @@ -151,7 +148,7 @@ msgid "RGB &Color" msgstr "RGB, &värit" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (ei ruskeaa)" msgid "&RGB Grayscale" msgstr "&RGB, harmaasävy" @@ -181,7 +178,7 @@ msgid "&Average" msgstr "&Keskiarvo" msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" -msgstr "CGA/PCjr/Tandy/E&GA/(S)VGA &yliskannaus" +msgstr "CGA/PCjr/Tandy/E&GA/(S)VGA-&yliskannaus" msgid "Change contrast for &monochrome display" msgstr "&Muuta harmaavärinäytön kontrastia" @@ -193,10 +190,10 @@ msgid "&Tools" msgstr "Työ&kalut" msgid "&Settings..." -msgstr "&Kokoonpano..." +msgstr "&Asetukset..." msgid "Settings..." -msgstr "" +msgstr "Asetukset..." msgid "&Update status bar icons" msgstr "&Päivitä tilapalkin kuvakkeita" @@ -211,7 +208,7 @@ msgid "&Preferences..." msgstr "&Sovellusasetukset..." msgid "Enable &Discord integration" -msgstr "Käytä &Discord-integraatiota" +msgstr "&Discord-integraatio" msgid "Sound &gain..." msgstr "&Äänitasot..." @@ -232,13 +229,13 @@ msgid "&About 86Box..." msgstr "&Tietoja 86Boxista..." msgid "&New image..." -msgstr "&Uusi kasettikuva..." +msgstr "&Uusi levykuva..." msgid "&Existing image..." -msgstr "&Olemassaoleva kasettikuva..." +msgstr "&Olemassaoleva levykuva..." msgid "Existing image (&Write-protected)..." -msgstr "Olemassaoleva kasettikuva (&kirjoitussuojattu)..." +msgstr "Olemassaoleva levykuva (&kirjoitussuojattu)..." msgid "&Record" msgstr "&Nauhoita" @@ -253,10 +250,10 @@ msgid "&Fast forward to the end" msgstr "Kelaa &loppuun" msgid "E&ject" -msgstr "&Poista kasettipesästä" +msgstr "&Irrota" msgid "&Image..." -msgstr "&ROM-moduulikuva..." +msgstr "&Levykuva..." msgid "E&xport to 86F..." msgstr "&Vie 86F-tiedostoon..." @@ -403,19 +400,19 @@ msgid "Dynamic Recompiler" msgstr "Dynaaminen uudelleenkääntäjä" msgid "CPU frame size" -msgstr "" +msgstr "CPU frame-koko" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Suuret framet (vähemmän sulava)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Pienemmät framet (sulavampi)" msgid "Video:" msgstr "Näytönohjain:" msgid "Video #2:" -msgstr "Näytönohjain 2:" +msgstr "Toinen näytönohjain:" msgid "Voodoo 1 or 2 Graphics" msgstr "Voodoo 1 tai 2-grafiikkasuoritin" @@ -427,13 +424,13 @@ msgid "XGA Graphics" msgstr "XGA-grafiikkasuoritin" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55-näyttöadapteri" msgid "Keyboard:" -msgstr "" +msgstr "Näppäimistö:" msgid "Keyboard" -msgstr "" +msgstr "Näppäimistö" msgid "Mouse:" msgstr "Hiiri:" @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI-sisääntulo:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI-ulostulo:" msgid "Standalone MPU-401" msgstr "Erillinen MPU-401" @@ -519,6 +516,9 @@ msgstr "LPT3-laite:" msgid "LPT4 Device:" msgstr "LPT4-laite:" +msgid "Internal LPT ECP DMA:" +msgstr "Sisäisen LPT:n ECP DMA:" + msgid "Serial port 1" msgstr "Sarjaportti 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Levykeohjain:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ohjain:" msgid "Tertiary IDE Controller" msgstr "Kolmas IDE-ohjain" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Neljäs IDE-ohjain" msgid "Hard disk" -msgstr "" +msgstr "Kiintolevy" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Kiintolevyt:" msgid "Firmware Version" -msgstr "" +msgstr "Laiteohjelmiston versio" msgid "&New..." msgstr "&Uusi..." @@ -643,10 +643,10 @@ msgid "MO:" msgstr "" msgid "Removable disks:" -msgstr "" +msgstr "Irrotettavat levyt:" msgid "Removable disk drives:" -msgstr "" +msgstr "Irrotettavat levyasemat:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA-muistilaajennus" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM-kortit" msgid "Card 1:" msgstr "Kortti 1:" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Nopeus" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Irrotettava levy %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Irrotettava levy %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Irrotettavat levykuvat" msgid "Image %1" -msgstr "" +msgstr "Levykuva %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box ei löytänyt käyttökelpoisia ROM-tiedostoja.\n\nVoit ladata ROM-paketin ja purkaa sen \"roms\"-hakemistoon." @@ -742,16 +742,16 @@ msgid "Surface images" msgstr "Pintalevykuvat" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "Konetta \"%hs\" ei voi käyttää, koska roms/machines-hakemistosta puuttuvien ROM-tiedostojen vuoksi. Vaihdetaan käyttökelpoiseen koneeseen." +msgstr "Konetta \"%hs\" ei voida käyttää, koska roms/machines-hakemistosta puuttuu ROM-tiedostoja. Vaihdetaan käyttökelpoiseen koneeseen." msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." -msgstr "Näytönohjainta \"%hs\" ei voi käyttää, koska roms/machines-hakemistosta puuttuvien ROM-tiedostojen vuoksi. Vaihdetaan käyttökelpoiseen näytönohjaimeen." +msgstr "Näytönohjainta \"%hs\" ei voida käyttää, koska roms/video-hakemistosta puuttuu ROM-tiedostoja. Vaihdetaan käyttökelpoiseen näytönohjaimeen." msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card." -msgstr "Näytönohjainta 2 \"%hs\" ei voi käyttää, koska roms/machines-hakemistosta puuttuvien ROM-tiedostojen vuoksi. Toisen näytönohjaimen poistaminen käytöstä." +msgstr "Toista näytönohjainta \"%hs\" ei voida käyttää, koska roms/video-hakemistosta puuttuu ROM-tiedostoja. Toinen näytönohjain poistetaan käytöstä." msgid "Device \"%hs\" is not available due to missing ROMs. Ignoring the device." -msgstr "Laite \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Laitteen huomiotta jättäminen." +msgstr "Laitetta \"%hs\" ei voida käyttää puuttuvien ROM-tiedostojen vuoksi. Laite jätetään huomiotta." msgid "Machine" msgstr "Tietokone" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Portit (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Portit" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Sarjaportit:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Rinnakkaisportit:" msgid "Storage controllers" msgstr "Tallennusohjaimet" @@ -787,25 +787,25 @@ msgid "Hard disks" msgstr "Kiintolevyt" msgid "Disks:" -msgstr "" +msgstr "Levyt:" msgid "Floppy:" -msgstr "" +msgstr "Levyke:" msgid "Controllers:" -msgstr "" +msgstr "Ohjaimet:" msgid "Floppy & CD-ROM drives" -msgstr "Levyke ja CD-ROM" +msgstr "Levyke- ja CD-ROM-asemat" msgid "Other removable devices" -msgstr "Muut tallennuslaitteet" +msgstr "Muut irrotettavat laitteet" msgid "Other peripherals" msgstr "Muut oheislaitteet" msgid "Other devices" -msgstr "" +msgstr "Muut laitteet" msgid "Click to capture mouse" msgstr "Kaappaa hiiri klikkaamalla" @@ -850,7 +850,7 @@ msgid "Invalid PCap device" msgstr "Virheellinen PCap-laite" msgid "2-axis, 2-button joystick(s)" -msgstr "2-akselinen 2-painikkeinen peliohjain/-ohjaimet" +msgstr "2-akseliset 2-painikkeiset peliohjaimet" msgid "2-axis, 4-button joystick" msgstr "2-akselinen 4-painikkeinen peliohjain" @@ -886,25 +886,25 @@ msgid "Thrustmaster FCS + Rudder Control System" msgstr "" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2-painikkeiset peliohjaimet" msgid "2-button flight yoke" -msgstr "" +msgstr "2-painikkeinen lento-ohjain" msgid "4-button gamepad" -msgstr "" +msgstr "4-painikkeinen peliohjain" msgid "4-button flight yoke" -msgstr "" +msgstr "4-painikkeinen lento-ohjain" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2-painikkeinen lento-ohjain kaasuvivulla" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4-painikkeinen lento-ohjain kaasuvivulla" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95-ratti (3-akselinen, 4-painikkeinen)" msgid "None" msgstr "Ei mikään" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Sisäinen laite" msgid "&File" -msgstr "" +msgstr "&Tiedosto" msgid "&New machine..." -msgstr "" +msgstr "&Uusi kone..." msgid "&Check for updates..." -msgstr "" +msgstr "T&arkista päivitykset..." msgid "Exit" msgstr "Poistu" @@ -982,7 +982,7 @@ msgid "86Box v" msgstr "86Box v" msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information." -msgstr "Vanhojen tietokoneiden emulaattori\n\nTekijät: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne ja muut.\n\nSarah Walkerin, leilein, JohnElliottin, greatpsychon ja muiden aiemmat keskeiset panokset.\n\nJulkaistu GNU General Public License 2. version tai myöhemmän alaisena. Tarkempia tietoja LICENSE-tiedostossa." +msgstr "Vanhojen tietokoneiden emulaattori\n\nTekijät: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne ja muut.\n\nSisältää Sarah Walkerin, leilein, JohnElliottin, greatpsychon ja muiden aiemmat keskeiset työpanokset.\n\nJulkaistu GNU General Public License 2. version tai myöhemmän alaisena. Tarkempia tietoja LICENSE-tiedostossa." msgid "Hardware not available" msgstr "Laitteisto ei ole saatavilla" @@ -991,7 +991,7 @@ msgid "Make sure %1 is installed and that you are on a %1-compatible network con msgstr "Varmista, että %1 on asennettu ja että verkkoyhteytesi on %1-yhteensopiva." msgid "Invalid configuration" -msgstr "Virheelliset määritykset" +msgstr "Virheellinen määritys" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." msgstr "%1 vaaditaan PostScript-tiedostojen automaattiseen muuntamiseen PDF-tiedostoiksi.\n\nKaikki geneeriselle PostScript-tulostimelle lähetetyt asiakirjat tallennetaan PostScript (.ps) -tiedostoina." @@ -1024,7 +1024,7 @@ msgid "GLSL shaders" msgstr "GLSL-varjostinohjelmat" msgid "You are loading an unsupported configuration" -msgstr "Olet lataamassa ei-tuettuja määrittelyjä" +msgstr "Olet lataamassa ei-tuettua määritystä" msgid "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid." msgstr "Valittuun tietokoneeseen perustuva suoritintyypin suodatus ei ole käytössä tällä emuloidulla koneella.\n\nTämä mahdollistaa muutoin yhteensopimattoman suorittimen valinnan kyseisen tietokoneen kanssa. Voit kuitenkin kohdata ongelmia tietokoneen BIOS:in tai muun ohjelmiston kanssa.\n\nTämän asetuksen käyttö ei ole virallisesti tuettua ja kaikki tehdyt virheraportit voidaan sulkea epäpätevinä." @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Kylmä uudelleenkäynnistys" msgid "Force shutdown" -msgstr "" +msgstr "Pakota sammutus" msgid "Start" -msgstr "" +msgstr "Käynnistä" msgid "Not running" -msgstr "" +msgstr "Ei käynnissä" msgid "Running" -msgstr "" +msgstr "Käynnissä" msgid "Paused" -msgstr "" +msgstr "Pysäytetty" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Odottaa" msgid "Powered Off" -msgstr "" +msgstr "Sammutettu" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n käynnissä" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n pysäytetty" + +msgid "%n waiting" +msgstr "%n odottaa" + +msgid "%1 total" +msgstr "yhteensä %1" + +msgid "VMs: %1" +msgstr "Virtuaalikoneita: %1" msgid "System Directory:" -msgstr "" +msgstr "Konekansio:" msgid "Choose directory" -msgstr "" +msgstr "Valitse kansio" msgid "Choose configuration file" -msgstr "" +msgstr "Valitse konemääritystiedosto" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box-konemääritystiedostot (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Määrityksen lukeminen epäonnistui" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Valittua määritystä ei voitu avata: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Käytä säännöllisiä lausekkeita (regex) hakukentässä" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 konetta on tällä hetkellä aktiivisena. Haluatko silti sulkea virtuaalikoneiden hallinnan?" msgid "Add new system wizard" -msgstr "" +msgstr "Koneenlisäysohjelma" msgid "Introduction" -msgstr "" +msgstr "Johdanto" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Tämä ohjelma auttaa sinua lisäämään uuden koneen 86Boxiin." msgid "New configuration" -msgstr "" +msgstr "Uusi määritys" msgid "Complete" -msgstr "" +msgstr "Valmis" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Ohjelma käynnistää koneen määrityksen." msgid "Use existing configuration" -msgstr "" +msgstr "Käytä olemassaolevaa määritystä" msgid "Type some notes here" -msgstr "" +msgstr "Kirjoita muistiinpanoja" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Liitä olemassaolevan määrityksen sisälto alla olevaan tekstikenttään." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Lataa määritys tiedostosta" msgid "System name" -msgstr "" +msgstr "Koneen nimi" msgid "System name:" -msgstr "" +msgstr "Koneen nimi:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Koneen nimi ei voi sisältää joitakin merkkejä" msgid "System name already exists" -msgstr "" +msgstr "Koneen nimi on jo olemassa" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Anna kansio koneelle" msgid "Directory does not exist" -msgstr "" +msgstr "Kansiota ei ole olemassa" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Koneelle luodaan uusi kansio valittuun kansioon" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Koneen sijainti:" msgid "System name and location" -msgstr "" +msgstr "Koneen nimi ja sijainti:" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Anna koneen nimi ja valitse sijainti" msgid "Enter the name of the system" -msgstr "" +msgstr "Kirjoita koneen nimi" msgid "Please enter a system name" -msgstr "" +msgstr "Anna koneelle nimi" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Valinnainen näyttönimi:" msgid "Display name:" -msgstr "" +msgstr "Näyttönimi:" msgid "Set display name" -msgstr "" +msgstr "Aseta näyttönimi" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Anna uusi näyttönimi tai poista se" msgid "Change &display name..." -msgstr "" +msgstr "Vaihda &näyttönimi" msgid "Context Menu" -msgstr "" +msgstr "Kontekstivalikko" msgid "&Open folder..." -msgstr "" +msgstr "&Avaa kansio..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Avaa &tulostimen lokero..." msgid "Set &icon..." -msgstr "" +msgstr "Aseta &kuvake..." msgid "Select an icon" -msgstr "" +msgstr "Valitse kuvake" msgid "C&lone..." -msgstr "" +msgstr "K&loonaa..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuaalikone \"%1\" (%2) kloonataan tänne:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Hakemisto %1 on jo olemassa" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Et voi käyttää seuraavia merkkejä nimessä: %1" msgid "Clone" -msgstr "" +msgstr "Kloonaa" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Kloonatulle virtuaalikoneelle ei voitu luoda hakemistoa" msgid "Failed to clone VM." -msgstr "" +msgstr "Virtuaalikoneen kloonaus epäonnistui." msgid "Directory in use" -msgstr "" +msgstr "Hakemisto käytössä" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Valittu hakemisto on jo käytössä. Valitse toinen hakemisto." msgid "Create directory failed" -msgstr "" +msgstr "Hakemiston luominen epäonnistui" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Uudelle koneelle ei voitu luoda hakemistoa" msgid "Configuration write failed" -msgstr "" +msgstr "Määrityksen kirjoitus epäonnistui" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Asetustiedostoa %1 ei voitu avata kirjoittamista varten" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Koneenlisäysvirhe" msgid "Remove directory failed" -msgstr "" +msgstr "Hakemiston poistaminen epäonnistui" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Joitakin konehakemiston tiedostoista ei voitu poistaa. Poista ne käsin." msgid "Build" -msgstr "" +msgstr "Käännös" msgid "Version" -msgstr "" +msgstr "Versio" + +msgid "An update to 86Box is available: %1 %2" +msgstr "86Box-päivitys on saatavilla: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Päivityksiä ei voitu tarkistaa: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "86Box-päivitys on saatavilla!" msgid "Warning" -msgstr "" +msgstr "Varoitus" msgid "&Kill" -msgstr "" +msgstr "P&akkopysäytä" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Virtuaalikoneen pakkopysäytys saattaa johtaa datan menettämiseen. Tee niin ainoastaan jos 86Box-prosessi on jumissa.\n\nHaluatko varmasti pakkopysäyttää \"%1\"-virtuaalikoneen?" msgid "&Delete" -msgstr "" +msgstr "&Poista" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Haluatko varmasti poistaa \"%1\"-virtuaalikoneen ja kaikki sen tiedostot? Poistamista ei voi perua!" msgid "Show &config file" -msgstr "" +msgstr "Näytä &määritystiedosto" msgid "No screenshot" -msgstr "" +msgstr "Ei kuvakaappausta" msgid "Search" -msgstr "" +msgstr "Hae" msgid "Searching for VMs..." -msgstr "" +msgstr "Haetaan virtuaalikoneita..." msgid "Found %1" -msgstr "" +msgstr "%1 löydetty" msgid "System" -msgstr "" +msgstr "Kone" msgid "Storage" -msgstr "" +msgstr "Tallennus" msgid "Disk %1: " -msgstr "" +msgstr "Levy %1: " msgid "No disks" -msgstr "" +msgstr "Ei levyjä" msgid "Audio" -msgstr "" +msgstr "Ääni" msgid "Audio:" -msgstr "" +msgstr "Ääni:" msgid "ACPI shutdown" msgstr "ACPI-sammutus" @@ -1363,10 +1369,10 @@ msgid "Hard disk images" msgstr "Kiintolevykuvat" msgid "Unable to read file" -msgstr "Tiedostoa ei voi lukea" +msgstr "Tiedostoa ei voitu lukea" msgid "Unable to write file" -msgstr "Tiedostoon ei voi kirjoittaa" +msgstr "Tiedostoa ei voitu kirjoittaa" msgid "HDI or HDX images with a sector size other than 512 are not supported." msgstr "HDI- ja HDX-levykuvien ainoa tuettu sektorikoko on 512" @@ -1384,7 +1390,7 @@ msgid "Make sure the file exists and is readable." msgstr "Varmista, että tiedosto on olemassa ja lukukelpoinen" msgid "Make sure the file is being saved to a writable directory." -msgstr "Varmista, että tiedoston tallennuskansioon on kirjoitusoikeus" +msgstr "Varmista, että tiedoston tallennuskansioon pystyy kirjoittamaan." msgid "Disk image too large" msgstr "Liian suuri levykuva" @@ -1462,7 +1468,7 @@ msgid "Parent and child disk timestamps do not match" msgstr "Ylä- ja alatason levyjen aikaleimat eivät täsmää" msgid "Could not fix VHD timestamp." -msgstr "VHD aikaleimaa ei pystytty korjaamaan." +msgstr "VHD:n aikaleimaa ei pystytty korjaamaan." msgid "MFM/RLL" msgstr "MFM/RLL" @@ -1579,7 +1585,7 @@ msgid "Mouse sensitivity:" msgstr "Hiiren herkkyys:" msgid "Select media images from program working directory" -msgstr "Valitse mediakuvat ohjelman työhakemistosta" +msgstr "Valitse levykuvat ohjelman työhakemistosta" msgid "PIT mode:" msgstr "PIT-tila:" @@ -1600,13 +1606,13 @@ msgid "WinBox is no longer supported" msgstr "WinBoxia ei enää tueta" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "WinBox-managerin kehitys lopetettiin vuonna 2022, koska ylläpitäjiä ei ollut riittävästi. Koska suuntaamme ponnistuksemme 86Boxin parantamiseen entisestään, olemme päättäneet olla enää tukematta WinBoxia managerina.\n\nWinBoxin kautta ei enää toimiteta päivityksiä, ja saatat kohdata virheellistä käyttäytymistä, jos jatkat sen käyttöä 86Boxin uudemmissa versioissa. Kaikki WinBoxin käyttäytymiseen liittyvät vikailmoitukset suljetaan virheellisinä.\n\nSiirry osoitteeseen 86box.net saadaksesi luettelon muista käyttämistäsi hallintaohjelmista." +msgstr "WinBox-managerin kehitys lopetettiin vuonna 2022, koska ylläpitäjiä ei ollut riittävästi. Koska suuntaamme ponnistuksemme 86Boxin parantamiseen entisestään, olemme päättäneet olla enää tukematta WinBoxia managerina.\n\nWinBoxin kautta ei enää toimiteta päivityksiä, ja saatat kohdata virheellistä käyttäytymistä, jos jatkat sen käyttöä 86Boxin uudemmissa versioissa. Kaikki WinBoxin käyttäytymiseen liittyvät vikailmoitukset suljetaan virheellisinä.\n\nSiirry osoitteeseen 86box.net saadaksesi luettelon muista hallintaohjelmista." msgid "Generate" msgstr "Luo" msgid "Joystick configuration" -msgstr "Peliohjainin kokoonpano" +msgstr "Peliohjaimen määritys" msgid "Device" msgstr "Laite" @@ -1626,9 +1632,6 @@ msgstr "Luettelo MCA-laitteista:" msgid "&Tablet tool" msgstr "Tablettityökalu" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Tietoja &Qt:sta" @@ -1636,13 +1639,13 @@ msgid "&MCA devices..." msgstr "MCA-laitteet..." msgid "Show non-&primary monitors" -msgstr "Näytä muut kuin ensisijaiset monitorit" +msgstr "Näytä muut kuin ensisijaiset näytöt" msgid "Open screenshots &folder..." msgstr "Avaa kuvakaappaukset-kansio..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Sovelletaan koko näytön venytystilaa maksimoidessa" +msgstr "Sovella koko näytön venytystilaa maksimoidessa" msgid "&Cursor/Puck" msgstr "&Kursori/Kiekko" @@ -1657,13 +1660,13 @@ msgid "&Connected" msgstr "&Yhdistetty" msgid "Clear image &history" -msgstr "Tyhjennä kuva&historia" +msgstr "Tyhjennä levykuva&historia" msgid "Create..." msgstr "Luo..." msgid "Host CD/DVD Drive (%1)" -msgstr "Isäntä CD/DVD-asema (%1)" +msgstr "Isännän CD/DVD-asema (%1)" msgid "Unknown Bus" msgstr "Tuntematon väylä" @@ -1672,19 +1675,19 @@ msgid "Null Driver" msgstr "Nolla-ajuri" msgid "NIC:" -msgstr "" +msgstr "Verkkokortti:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Verkkokortti %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Verkkokortti %1 (%2) %3" msgid "Render behavior" msgstr "Renderöintikäyttäytyminen" msgid "Use target framerate:" -msgstr "Käytä kuvataajuustavoitetta:" +msgstr "Kuvataajuustavoite:" msgid " fps" msgstr " ruutua/s" @@ -1717,16 +1720,16 @@ msgid "Error initializing OpenGL" msgstr "Virhe OpenGL:n alustamisessa" msgid "\nFalling back to software rendering." -msgstr "\nPaluu ohjelmistoalustusöintiin." +msgstr "\nPalataan ohjelmistopohjaiseen renderöintiin." msgid "

When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.

" -msgstr "

Kun valitset mediakuvia (CD-ROM, levykkeet jne.), avausikkuna käynnistyy samaan hakemistoon kuin 86Boxin konfigurointitiedosto. Tällä asetuksella on todennäköisesti merkitystä vain macOS-käyttöjärjestelmässä.

" +msgstr "

Kun valitset levykuvia (CD-ROM, levykkeet jne.), avausikkuna aukeaa 86Boxin määritystiedoston hakemistoon. Tällä asetuksella on todennäköisesti merkitystä vain macOS-käyttöjärjestelmässä.

" msgid "This machine might have been moved or copied." msgstr "Kone on saatettu siirtää tai kopioida." msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." -msgstr "Varmistaakseen asianmukaisen verkkotoiminnon 86Boxin on tiedettävä, onko tämä kone siirretty vai kopioitu.\n\nValitse \"Kopioin sen\", jos et ole varma." +msgstr "Varmistaakseen asianmukaisen verkkotoiminnan 86Boxin on tiedettävä, onko tämä kone siirretty vai kopioitu.\n\nValitse \"Kopioin sen\", jos et ole varma." msgid "I Moved It" msgstr "Siirsin sen" @@ -1741,7 +1744,7 @@ msgid "No MCA devices." msgstr "Ei MCA-laitteita." msgid "MiB" -msgstr "Mit" +msgstr "" msgid "GiB" msgstr "" @@ -1768,13 +1771,13 @@ msgid "Adapter:" msgstr "Sovitin:" msgid "VDE Socket:" -msgstr "VDE-pistorasia:" +msgstr "VDE-socket:" msgid "86Box Unit Tester" msgstr "86Box Unit Tester" msgid "Novell NetWare 2.x Key Card" -msgstr "Novell NetWare 2.x -avainkortti" +msgstr "Novell NetWare 2.x-avainkortti" msgid "Serial port passthrough 1" msgstr "Sarjaportin läpivienti 1" @@ -1789,25 +1792,25 @@ msgid "Serial port passthrough 4" msgstr "Sarjaportin läpivienti 4" msgid "Renderer &options..." -msgstr "Alustusasetukset..." +msgstr "Renderöijän &asetukset..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT-näppäimistö" msgid "AT Keyboard" -msgstr "" +msgstr "AT-näppäimistö" msgid "AX Keyboard" -msgstr "" +msgstr "AX-näppäimistö" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2-näppäimistö" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55-näppäimistö" msgid "Keys" -msgstr "" +msgstr "Näppäimet" msgid "Logitech/Microsoft Bus Mouse" msgstr "Logitech/Microsoft-väylähiiri" @@ -1831,16 +1834,16 @@ msgid "Logitech Serial Mouse" msgstr "Logitech-sarjahiiri" msgid "PS/2 Mouse" -msgstr "PS/2 hiiri" +msgstr "PS/2-hiiri" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort-hiiri" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (sarja)" msgid "Default Baud rate" -msgstr "" +msgstr "Oletussiirtonopeus" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Tavallinen Hayes-yhteensopiva modeemi" @@ -1867,49 +1870,49 @@ msgid "MIDI Input Device" msgstr "MIDI-syöttölaite" msgid "BIOS file" -msgstr "" +msgstr "BIOS-tiedosto" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS-tiedosto (ROM #1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS-tiedosto (ROM #2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS-tiedosto (ROM #3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS-tiedosto (ROM #4)" msgid "BIOS address" msgstr "BIOS-osoite" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS-osoite (ROM #1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS-osoite (ROM #2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS-osoite (ROM #3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS-osoite (ROM #4)" msgid "Enable BIOS extension ROM Writes" -msgstr "Käytä BIOS-laajennuksen ROM-kirjoitusten" +msgstr "Salli BIOS-laajennuksen ROM-kirjoitukset" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Salli BIOS-laajennuksen ROM-kirjoitukset (ROM #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Salli BIOS-laajennuksen ROM-kirjoitukset (ROM #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Salli BIOS-laajennuksen ROM-kirjoitukset (ROM #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Salli BIOS-laajennuksen ROM-kirjoitukset (ROM #4)" msgid "Linear framebuffer base" msgstr "" @@ -1921,82 +1924,82 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "Sarjaportin IRQ" msgid "Parallel port IRQ" -msgstr "" +msgstr "Rinnakkaisportin IRQ" msgid "BIOS Revision" -msgstr "BIOS-tarkistus" +msgstr "BIOS-versio" msgid "BIOS Version" -msgstr "" +msgstr "BIOS-versio" msgid "BIOS Language" -msgstr "" +msgstr "BIOS-kieli" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161-laajennusyksikkö" msgid "IBM Cassette Basic" msgstr "" msgid "Translate 26 -> 17" -msgstr "Käännä 26 -> 17" +msgstr "Muunna 26 -> 17" msgid "Language" msgstr "Kieli" msgid "Enable backlight" -msgstr "Käytä taustavalota" +msgstr "Taustavalo" msgid "Invert colors" -msgstr "Käännä värit" +msgstr "Käänteiset värit" msgid "BIOS size" -msgstr "BIOS-koko" +msgstr "BIOS:in koko" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOS:in koko (ROM #1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOS:in koko (ROM #2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOS:in koko (ROM #3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOS:in koko (ROM #4)" msgid "Map C0000-C7FFF as UMB" -msgstr "Kartta C0000-C7FFF UMB:nä" +msgstr "Kartoita C0000-C7FFF UMB:nä" msgid "Map C8000-CFFFF as UMB" -msgstr "Kartta C8000-CFFFF UMB:nä" +msgstr "Kartoita C8000-CFFFF UMB:nä" msgid "Map D0000-D7FFF as UMB" -msgstr "Kartta D0000-D7FFF UMB:nä" +msgstr "Kartoita D0000-D7FFF UMB:nä" msgid "Map D8000-DFFFF as UMB" -msgstr "Kartta D8000-DFFFF UMB:nä" +msgstr "Kartoita D8000-DFFFF UMB:nä" msgid "Map E0000-E7FFF as UMB" -msgstr "Kartta E0000-E7FFF UMB:nä" +msgstr "Kartoita E0000-E7FFF UMB:nä" msgid "Map E8000-EFFFF as UMB" -msgstr "Kartta E8000-EFFFF UMB:nä" +msgstr "Kartoita E8000-EFFFF UMB:nä" msgid "JS9 Jumper (JIM)" -msgstr "JS9 Jumpperi (JIM)" +msgstr "JS9-jumpperi (JIM)" msgid "MIDI Output Device" msgstr "MIDI-lähtölaite" msgid "MIDI Real time" -msgstr "MIDI reaaliajassa" +msgstr "Reaaliaikainen MIDI" msgid "MIDI Thru" -msgstr "MIDI-tulon läpivienti" +msgstr "MIDI-läpivienti" msgid "MIDI Clockout" msgstr "MIDI-kellon ulostulo" @@ -2008,52 +2011,52 @@ msgid "Output Gain" msgstr "Lähtötaso" msgid "Chorus" -msgstr "Kuoro" +msgstr "" msgid "Chorus Voices" -msgstr "Kuoron äänet" +msgstr "" msgid "Chorus Level" -msgstr "Kuorotaso" +msgstr "" msgid "Chorus Speed" -msgstr "Kuronopeus" +msgstr "" msgid "Chorus Depth" -msgstr "Kuorosyvyys" +msgstr "" msgid "Chorus Waveform" -msgstr "Kuoroaaltomuoto" +msgstr "" msgid "Reverb" msgstr "Jälkikaiunta" msgid "Reverb Room Size" -msgstr "Jälkikaiuntahuoneen koko" +msgstr "" msgid "Reverb Damping" -msgstr "Jälkikaiunta vaimennus" +msgstr "" msgid "Reverb Width" -msgstr "Jälkikaiunnan leveys" +msgstr "" msgid "Reverb Level" -msgstr "Jälkikaiunnan taso" +msgstr "" msgid "Interpolation Method" msgstr "Interpolointimenetelmä" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dynaaminen näytteiden lataus" msgid "Reverb Output Gain" -msgstr "Jälkikaiunta lähtötaso" +msgstr "Jälkikaiunnan lähtötaso" msgid "Reversed stereo" msgstr "Käänteinen stereo" msgid "Nice ramp" -msgstr "Hieno ramppi" +msgstr "" msgid "Hz" msgstr "Hz" @@ -2065,16 +2068,16 @@ msgid "Serial Port" msgstr "Sarjaportti" msgid "RTS toggle" -msgstr "RTS-vaihtokytkin" +msgstr "" msgid "Revision" -msgstr "Tarkistus" +msgstr "Versio" msgid "Controller" msgstr "Ohjain" msgid "Show Crosshair" -msgstr "Näytä ristikko" +msgstr "Näytä tähtäin" msgid "DMA" msgstr "DMA" @@ -2086,7 +2089,7 @@ msgid "MAC Address OUI" msgstr "MAC-osoitteen OUI" msgid "Enable BIOS" -msgstr "Käytä BIOS:ta" +msgstr "BIOS" msgid "Baud Rate" msgstr "Baudinopeus" @@ -2107,7 +2110,7 @@ msgid "RAM size" msgstr "RAM-koko" msgid "Initial RAM size" -msgstr "Alkuperäinen RAM-koko" +msgstr "RAM-muistin alkukoko" msgid "Serial Number" msgstr "Sarjanumero" @@ -2131,13 +2134,13 @@ msgid "Low DMA" msgstr "Matala DMA" msgid "Enable Game port" -msgstr "Käytä peliporttita" +msgstr "Peliportti" msgid "SID Model" -msgstr "" +msgstr "SID-malli" msgid "SID Filter Strength" -msgstr "" +msgstr "SID-filtterin vahvuus" msgid "Surround module" msgstr "Surround-moduuli" @@ -2146,16 +2149,16 @@ msgid "CODEC" msgstr "CODEC" msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" -msgstr "CODEC-keskeytyksen nostaminen CODEC-asennuksen yhteydessä (jotkut ohjaimet tarvitsevat sitä)" +msgstr "CODEC-keskeytys CODEC-asennuksen yhteydessä (jotkut ohjaimet tarvitsevat sitä)" msgid "SB Address" msgstr "SB-osoite" msgid "Adlib Address" -msgstr "" +msgstr "Adlib-osoite" msgid "Use EEPROM setting" -msgstr "" +msgstr "Käytä EEPROM-asetusta" msgid "WSS IRQ" msgstr "WSS-IRQ" @@ -2164,7 +2167,7 @@ msgid "WSS DMA" msgstr "WSS-DMA" msgid "Enable OPL" -msgstr "Käytä OPL:ta" +msgstr "OPL" msgid "Receive MIDI input (MPU-401)" msgstr "Vastaanota MIDI-tulo (MPU-401)" @@ -2173,10 +2176,10 @@ msgid "SB low DMA" msgstr "Matala SB-DMA" msgid "6CH variant (6-channel)" -msgstr "6CH-muunnos (6-kanavainen)" +msgstr "6CH-versio (6-kanavainen)" msgid "Enable CMS" -msgstr "Käytä CMS:ta" +msgstr "CMS" msgid "Mixer" msgstr "Mikseri" @@ -2185,7 +2188,7 @@ msgid "High DMA" msgstr "Korkea DMA" msgid "Control PC speaker" -msgstr "Ohjaus PC-kaiutin" +msgstr "Ohjaa PC-kaiutinta" msgid "Memory size" msgstr "Muistin koko" @@ -2197,13 +2200,13 @@ msgid "IDE Controller" msgstr "IDE-ohjain" msgid "Codec" -msgstr "Codec" +msgstr "Koodekki" msgid "GUS type" msgstr "GUS-tyyppi" msgid "Enable 0x04 \"Exit 86Box\" command" -msgstr "Käytä komentota 0x04 \"Poistuminen 86Box\"" +msgstr "Salli 0x04-komento \"Sulje 86Box\"" msgid "Display type" msgstr "Näytön tyyppi" @@ -2218,10 +2221,10 @@ msgid "Line doubling type" msgstr "Linjan kaksinkertaistamistyyppi" msgid "Snow emulation" -msgstr "Lumi-emulointi" +msgstr "Lumiemulointi" msgid "Monitor type" -msgstr "Monitorityyppi" +msgstr "Näytön tyyppi" msgid "Character set" msgstr "Merkistö" @@ -2239,37 +2242,37 @@ msgid "RAMDAC type" msgstr "RAMDAC-tyyppi" msgid "Blend" -msgstr "Sekoitus" +msgstr "Sekoita" msgid "Font" -msgstr "" +msgstr "Fontti" msgid "Bilinear filtering" msgstr "Bilineaarinen suodatus" msgid "Video chroma-keying" -msgstr "" +msgstr "Videon väriavainnus" msgid "Dithering" -msgstr "Dithering" +msgstr "Sekoitussävytys" msgid "Enable NMI for CGA emulation" -msgstr "Käytä NMI:ta CGA-emulointia varten" +msgstr "NMI CGA-emulointia varten" msgid "Voodoo type" msgstr "Voodoo-tyyppi" msgid "Framebuffer memory size" -msgstr "Kehyspuskurin muistin koko" +msgstr "Framebuffer-muistin koko" msgid "Texture memory size" msgstr "Tekstuurimuistin koko" msgid "Dither subtraction" -msgstr "Ditherin vähennys" +msgstr "Sekoitussävytyksen vähennys" msgid "Screen Filter" -msgstr "Seulasuodatin" +msgstr "Näyttösuodatin" msgid "Render threads" msgstr "Renderöintisäikeet" @@ -2293,34 +2296,34 @@ msgid "EMS mode" msgstr "EMS-tila" msgid "EMS Address" -msgstr "" +msgstr "EMS-osoite" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1-osoite" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2-osoite" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS-muistin koko" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1-muistin koko" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2-muistin koko" msgid "Enable EMS" -msgstr "" +msgstr "EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "EMS 2" msgid "Address for > 2 MB" -msgstr "Osoite > 2 Mt" +msgstr "> 2 Mt-osoite" msgid "Frame Address" msgstr "Kehyksen osoite" @@ -2335,7 +2338,7 @@ msgid "Always at selected speed" msgstr "Aina valitulla nopeudella" msgid "BIOS setting + Hotkeys (off during POST)" -msgstr "BIOS-asetus + pikanäppäimet (pois päältä POSTin aikana)" +msgstr "BIOS-asetus + pikanäppäimet (pois päältä POST:in aikana)" msgid "64 KB starting from F0000" msgstr "64 Kt alkaen F0000:sta" @@ -2353,10 +2356,10 @@ msgid "Linear" msgstr "Lineaarinen" msgid "4th Order" -msgstr "4. kertaluvun" +msgstr "" msgid "7th Order" -msgstr "7. kertaluvun" +msgstr "" msgid "Non-timed (original)" msgstr "Ajastamaton (alkuperäinen)" @@ -2371,13 +2374,13 @@ msgid "Three" msgstr "Kolme" msgid "Wheel" -msgstr "Pyörä" +msgstr "Rulla" msgid "Five + Wheel" -msgstr "Viisi + pyörä" +msgstr "Viisi + rulla" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Viisi + kaksi rullaa" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 sarja / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 Kt" msgid "Composite" msgstr "Komposiitti" +msgid "True color" +msgstr "" + msgid "Old" msgstr "Vanha" @@ -2455,13 +2461,13 @@ msgid "Green Monochrome" msgstr "Vihreä yksivärinen" msgid "Amber Monochrome" -msgstr "Keltainen yksivärinen" +msgstr "Meripihkan värinen yksivärinen" msgid "Gray Monochrome" msgstr "Harmaa yksivärinen" msgid "Color (no brown)" -msgstr "Väri (ei ruskea)" +msgstr "Väri (ei ruskeaa)" msgid "Color (IBM 5153)" msgstr "Väri (IBM 5153)" @@ -2482,7 +2488,7 @@ msgid "Has Quadcolor II daughter board" msgstr "" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Vaihtoehtoinen yksivärikontrasti" msgid "128 KB" msgstr "128 Kt" @@ -2512,19 +2518,19 @@ msgid "Green" msgstr "Vihreä" msgid "Amber" -msgstr "Keltainen" +msgstr "Meripihka" msgid "Gray" msgstr "Harmaa" msgid "Grayscale" -msgstr "" +msgstr "Harmaasävy" msgid "Color" msgstr "Väri" msgid "U.S. English" -msgstr "Yhdysvaltain englanti" +msgstr "Amerikanenglanti" msgid "Scandinavian" msgstr "Skandinaavinen" @@ -2533,22 +2539,22 @@ msgid "Other languages" msgstr "Muut kielet" msgid "Bochs latest" -msgstr "Bochs uusin" +msgstr "Uusin Bochs" msgid "Apply overscan deltas" msgstr "" msgid "Mono Interlaced" -msgstr "" +msgstr "Lomitettu yksivärinen" msgid "Mono Non-Interlaced" -msgstr "Yksivärinen ei-välitetyt" +msgstr "Ei-lomitettu yksivärinen" msgid "Color Interlaced" -msgstr "Väri välitetyt" +msgstr "Lomitettu väri" msgid "Color Non-Interlaced" -msgstr "Väri ei-välitetyt" +msgstr "Ei-lomitettu väri" msgid "3Dfx Voodoo Graphics" msgstr "3dfx Voodoo-grafiikkasuoritin" @@ -2626,46 +2632,46 @@ msgid "Named Pipe (Server)" msgstr "Nimetty putki (palvelin)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Nimettu putki (päätelaite)" msgid "Host Serial Passthrough" msgstr "Isännän sarjaportin läpivienti" msgid "E&ject %1" -msgstr "&Poista kasettipesästä %1" +msgstr "&Poista %1" msgid "&Unmute" msgstr "&Poista mykistys" msgid "Softfloat FPU" -msgstr "Softfloat FPU" +msgstr "Softfloat-FPU" msgid "High performance impact" -msgstr "Suuri vaikutus suorituskykyyn" +msgstr "Merkittävä vaikutus suorituskykyyn" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] RAM-levy (maksiminopeus)" +msgstr "[Yleinen] RAM-levy (maksiminopeus)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Yleinen] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Yleinen] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Yleinen] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Yleinen] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Yleinen] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Yleinen] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Yleinen] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" msgstr "IBM 8514/A-klooni (ISA)" @@ -2689,226 +2695,262 @@ msgid "Unable to find Dot-Matrix fonts" msgstr "Pistematriisifontteja ei löydy" msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer." -msgstr "TrueType-fontteja kansiossa \"roms/printer/fonts\"-hakemistoon yleinen ESC/P pistematriisitulostin emulointiin." +msgstr "\"roms/printer/fonts\"-hakemiston TrueType-fontteja vaaditaan ESC/P-pistematriisitulostimen emulointiin." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Estä multimedianäppäimet" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Kysy varmistusta ennen asetusten tallentamista" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Kysy varmistusta ennen uudelleenkäynnistystä" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Kysy varmistusta ennen lopettamista" msgid "Options" -msgstr "" +msgstr "Asetukset" msgid "Model" -msgstr "" +msgstr "Malli" msgid "Model:" -msgstr "" +msgstr "Malli:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Vulkan-rendereriä ei voitu alustaa." msgid "GLSL Error" -msgstr "" +msgstr "GLSL-virhe" msgid "Could not load shader: %1" -msgstr "" +msgstr "Varjostinta %1 ei voitu ladata" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Vähintään OpenGL-versio 3.0 vaaditaan. Tämänhetkinen GLSL-versio on %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Tekstuuria ei voitu ladata: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Varjostinta ei voitu kääntää:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Ohjelmaa ei linkitetty:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Varjostinhallinta" msgid "Shader Configuration" -msgstr "" +msgstr "Varjostinasetukset" msgid "Add" -msgstr "" +msgstr "Lisää" msgid "Move up" -msgstr "" +msgstr "Siirrä ylös" msgid "Move down" -msgstr "" +msgstr "Siirrä alas" msgid "Could not load file %1" -msgstr "" +msgstr "Tiedostoa %1 ei voitu ladata" msgid "Key Bindings:" -msgstr "" +msgstr "Pikanäppäimet:" msgid "Action" -msgstr "" +msgstr "Toiminto" msgid "Keybind" -msgstr "" +msgstr "Pikanäppäin" msgid "Clear binding" -msgstr "" +msgstr "Tyhjennä pikanäppäin" msgid "Bind" -msgstr "" +msgstr "Määritä" msgid "Bind Key" -msgstr "" +msgstr "Määritä pikanäppäin" msgid "Enter key combo:" -msgstr "" +msgstr "Anna näppäinyhdistelmä:" msgid "Bind conflict" -msgstr "" +msgstr "Pikanäppäinkonflikti" msgid "This key combo is already in use." -msgstr "" +msgstr "Näppäinyhdistelmä on jo käytössä." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Läheta Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Lähetä Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Koko näyttö" msgid "Screenshot" -msgstr "" +msgstr "Kuvakaappaus" msgid "Release mouse pointer" -msgstr "" +msgstr "Vapauta hiiren osoitin" msgid "Toggle pause" -msgstr "" +msgstr "Pysäytä" msgid "Toggle mute" -msgstr "" +msgstr "Mykistä" msgid "Text files" -msgstr "" +msgstr "Tekstitiedostot" msgid "ROM files" -msgstr "" +msgstr "ROM-tiedostot" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont-tiedostot" msgid "Local Switch" -msgstr "" +msgstr "Paikallinen kytkin" msgid "Remote Switch" -msgstr "" +msgstr "Etäkytkin" msgid "Switch:" -msgstr "" +msgstr "Kytkin:" msgid "Hub Mode" -msgstr "" +msgstr "Hubitila" msgid "Hostname:" +msgstr "Isäntänimi:" + +msgid "ISA RAM:" msgstr "" -msgid "ISA RTC" -msgstr "" - -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" +msgid "ISA ROM:" msgstr "" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Tyhjennä NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Tämä poistaa kaikki NVRAM:iin liittyvät tiedostot \"nvr\"-kansiossa. Joudut määrittämään BIOS:in ja mahdollisesti muut laitteet uudelleen.\n\nHaluatko varmasti tyhjentää \"%1\"-virtuaalikoneen kaiken NVRAM-sisällön?" msgid "Success" -msgstr "" +msgstr "Onnistui" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "\"%1\"-virtuaalikoneen NVRAM-sisällön tyhjentäminen onnistui" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "\"%1\"-virtuaalikoneen NVRAM-sisällön tyhjentäminen epäonnistui" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 - virtuaalikoneiden hallinta" msgid "%n disk(s)" -msgstr "" +msgstr "%n levy(ä)" msgid "Unknown Status" -msgstr "" +msgstr "Tuntematon tila" msgid "No Machines Found!" -msgstr "" +msgstr "Koneita ei löytynyt!" msgid "Check for updates on startup" -msgstr "" +msgstr "Tarkista päivitykset käynnistyksen yhteydessä" msgid "Unable to determine release information" -msgstr "" +msgstr "Julkaisutietoja ei voitu hakea" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Päivitystenhakuvirhe:\n\n%1\n\nYritä uudelleen myöhemmin." msgid "Update check complete" +msgstr "Päivitystarkastus on valmis" + +msgid "stable" +msgstr "vakaa" + +msgid "beta" msgstr "" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Sinulla on käytössä uusin %1-versio 86Boxista: %2" msgid "version" -msgstr "" +msgstr "versio" msgid "build" -msgstr "" +msgstr "käännös" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Käytät versiota %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Versio %1 on nyt saatavilla." + +msgid "You are currently running build %1." +msgstr "Käytät käännöstä %1" + +msgid "Build %1 is now available." +msgstr "Käännös %1 on nyt saatavilla." + +msgid "Would you like to visit the download page?" +msgstr "Haluatko siirtyä lataussivulle?" msgid "Visit download page" -msgstr "" +msgstr "Siirry lataussivulle" msgid "Update check" -msgstr "" +msgstr "Päivitystarkistus" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Tarkistetaan päivityksiä..." msgid "86Box Update" -msgstr "" +msgstr "86Box-päivitys" msgid "Release notes:" -msgstr "" +msgstr "Julkaisutiedot:" -#~ msgid "HD Controller:" -#~ msgstr "Kiintolevyohjain:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP-asemat:" +msgid "Virtual machine crash" +msgstr "Virtuaalikone kaatui" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "\"%1\"-virtuaalikoneen prosessi kaatui yllättäen. Poistumiskoodi %2." -#~ msgid "ZIP images" -#~ msgstr "ZIP-levykuvat" +msgid "The system will not be added." +msgstr "Konetta ei lisätä." + +msgid "&Update mouse every CPU frame" +msgstr "&Päivitä hiiri jokaisen CPU framen yhteydessä" + +msgid "Hue" +msgstr "Sävy" + +msgid "Saturation" +msgstr "Värikylläisyys" + +msgid "Contrast" +msgstr "Kontrasti" + +msgid "Brightness" +msgstr "Kirkkaus" + +msgid "Sharpness" +msgstr "Terävyys" + +msgid "&CGA composite settings..." +msgstr "&CGA:n komposiittiasetukset..." + +msgid "CGA composite settings" +msgstr "CGA:n komposiittiasetukset" diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po index bf8f59237..d5b5b7fdb 100644 --- a/src/qt/languages/fr-FR.po +++ b/src/qt/languages/fr-FR.po @@ -10,7 +10,7 @@ msgid "&Action" msgstr "&Action" msgid "&Keyboard requires capture" -msgstr "&Capturer le clavier" +msgstr "C&apturer le clavier" msgid "&Right CTRL is left ALT" msgstr "CTRL &Droite devient ALT Gauche" @@ -19,7 +19,7 @@ msgid "&Hard Reset..." msgstr "&Hard Reset..." msgid "&Ctrl+Alt+Del" -msgstr "&Ctrl+Alt+Del" +msgstr "&Ctrl+Alt+Suppr" msgid "Ctrl+Alt+&Esc" msgstr "Ctrl+Alt+&Esc" @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Pause" msgid "Pause" -msgstr "" +msgstr "Pause" msgid "Re&sume" -msgstr "" +msgstr "Re&prendre" msgid "E&xit" msgstr "&Quitter" @@ -40,7 +40,7 @@ msgid "&View" msgstr "&Vue" msgid "&Hide status bar" -msgstr "&Masquer la barre de status" +msgstr "Masquer &la barre de status" msgid "Hide &toolbar" msgstr "Masquer la &barre d'outils" @@ -52,14 +52,11 @@ msgid "R&emember size && position" msgstr "S&auvegarder taille && position" msgid "Re&nderer" -msgstr "Moteur de &rendu vidéo" +msgstr "Moteur de re&ndu vidéo" msgid "&Qt (Software)" msgstr "&Qt (Logiciel)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -67,13 +64,13 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify &dimensions..." -msgstr "Spécifier dimensions..." +msgstr "Spécifier dimen&sions..." -msgid "F&orce 4:3 display ratio" -msgstr "F&orcer le ratio 4:3" +msgid "Force &4:3 display ratio" +msgstr "Forcer le ratio &4:3" msgid "&Window scale factor" -msgstr "&Echelle de facteur" +msgstr "Facteur d'&Echelle" msgid "&0.5x" msgstr "&0.5x" @@ -106,7 +103,7 @@ msgid "&8x" msgstr "&8x" msgid "Fi<er method" -msgstr "Méthode de Filtre" +msgstr "Mét&hode de Filtre" msgid "&Nearest" msgstr "&Plus proche" @@ -121,7 +118,7 @@ msgid "&Fullscreen" msgstr "&Plein écran" msgid "Fullscreen &stretch mode" -msgstr "Mode plein écran &étiré" +msgstr "Mode plein écran é&tiré" msgid "&Full screen stretch" msgstr "&Plein écran étiré" @@ -138,8 +135,8 @@ msgstr "&Echelle entière" msgid "4:&3 Integer scale" msgstr "Echelle entière 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "Réglages E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Réglages EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "Moniteur VGA &Inversé" @@ -148,16 +145,16 @@ msgid "VGA screen &type" msgstr "&Type d'écran VGA" msgid "RGB &Color" -msgstr "&Couleurs RGB" +msgstr "&Couleurs RVB" msgid "RGB (no brown)" -msgstr "" +msgstr "RVB (sans brun)" msgid "&RGB Grayscale" -msgstr "Niveau de Gris &RGB " +msgstr "Niveau de Gris &RVB" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Moniteur couleur RVB générique" msgid "&Amber monitor" msgstr "Moniteur &Ambre" @@ -196,13 +193,13 @@ msgid "&Settings..." msgstr "&Réglages..." msgid "Settings..." -msgstr "" +msgstr "Réglages..." msgid "&Update status bar icons" msgstr "Mettre à jour la barre de stat&us" msgid "Take s&creenshot" -msgstr "Copie &d'écran" +msgstr "Copie d'é&cran" msgid "S&ound" msgstr "S&on" @@ -223,7 +220,7 @@ msgid "End trace" msgstr "Arrêter traces" msgid "&Help" -msgstr "&Aide" +msgstr "Ai&de" msgid "&Documentation..." msgstr "&Documentation..." @@ -295,7 +292,7 @@ msgid "&75 fps" msgstr "&75 images par seconde" msgid "&VSync" -msgstr "Synchronisation &verticale" +msgstr "Synchronisation &Verticale" msgid "&Select shader..." msgstr "Sé&lectionnez le shader..." @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Configurer" msgid "CPU:" -msgstr "" +msgstr "Processeur:" msgid "CPU type:" msgstr "Type de processeur:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Recompilateur dynamique" msgid "CPU frame size" -msgstr "" +msgstr "Taille du bloc de processeur" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Blocs plus grands (moins fluide)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Blocs plus petits (plus fluide)" msgid "Video:" msgstr "Vidéo:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Graphique XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Graphique du adaptateur IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Clavier:" msgid "Keyboard" -msgstr "" +msgstr "Clavier" msgid "Mouse:" msgstr "Souris:" msgid "Mouse" -msgstr "" +msgstr "Souris" msgid "Joystick:" msgstr "Manette:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Manette 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Entrée MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Sortie MIDI:" msgid "Standalone MPU-401" msgstr "MPU-401 autonome" @@ -519,6 +516,9 @@ msgstr "Dispositif LPT3:" msgid "LPT4 Device:" msgstr "Dispositif LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA de l'ECP du LPT interne:" + msgid "Serial port 1" msgstr "Port série 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Contrôleur FD:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Contrôleur CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Troisième contrôleur IDE" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Quatrième contrôleur IDE" msgid "Hard disk" -msgstr "" +msgstr "Disque dur" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Disques durs:" msgid "Firmware Version" -msgstr "" +msgstr "Version du micrologiciel" msgid "&New..." msgstr "&Nouveau..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Lecteurs magnéto-optiques:" msgid "MO:" -msgstr "" +msgstr "Magnéto-optiques:" msgid "Removable disks:" -msgstr "" +msgstr "Disques amovibles:" msgid "Removable disk drives:" -msgstr "" +msgstr "Lecteurs de disques amovibles:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Extension de la mémoire ISA" msgid "ISA ROM Cards" -msgstr "" +msgstr "Cartes ROM ISA" msgid "Card 1:" msgstr "Carte 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Carte 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Carte ROM ISA générique" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Carte ROM ISA double générique" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Carte ROM ISA quadruple générique" msgid "ISABugger device" msgstr "Dispositif ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Vitesse" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Disque amovible %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Disque amovible %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Imges de disque amovible" msgid "Image %1" -msgstr "" +msgstr "Image %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box n'a pas pu trouver d'images ROM utilisables.\n\nS'il vous plait, téléchargez un ensemble ROM et extrayez-le dans le répertoire \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Ports (COM et LPT)" msgid "Ports" -msgstr "" +msgstr "Ports" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Ports série:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Ports parallèles:" msgid "Storage controllers" msgstr "Contrôleurs de stockage" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Disques durs" msgid "Disks:" -msgstr "" +msgstr "Disques:" msgid "Floppy:" -msgstr "" +msgstr "Disquettes:" msgid "Controllers:" -msgstr "" +msgstr "Contrôleurs:" msgid "Floppy & CD-ROM drives" msgstr "Lecteurs de disquette et CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Autres périphériques" msgid "Other devices" -msgstr "" +msgstr "Autres dispositifs" msgid "Click to capture mouse" msgstr "Cliquer pour capturer la souris" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Système de contrôle de vol Thrustmaster" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "SCV Thrustmaster + Système de commande de gouvernail" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Manette(s) de jeu à 2 boutons" msgid "2-button flight yoke" -msgstr "" +msgstr "Manette de vol à 2 boutons" msgid "4-button gamepad" -msgstr "" +msgstr "Manette de jeu à 2 boutons" msgid "4-button flight yoke" -msgstr "" +msgstr "Manette de vol à 4 boutons" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Manette de vol à 2 boutons avec manette des gaz" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Manette de vol à 4 boutons avec manette des gaz" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volant Win95 (3 axes, 4 boutons)" msgid "None" msgstr "Aucun" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Dispositif interne" msgid "&File" -msgstr "" +msgstr "&Fichier" msgid "&New machine..." -msgstr "" +msgstr "&Nouvelle machine..." msgid "&Check for updates..." -msgstr "" +msgstr "&Vérifier les mises à jour..." msgid "Exit" msgstr "Sortir" @@ -1027,7 +1027,7 @@ msgid "You are loading an unsupported configuration" msgstr "Vous chargez une configuration non prise en charge" msgid "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid." -msgstr "Le filtre du type du processeur basé par rapport à la machine sélectionnée est désactivé pour cette machine émulée.\n\nCela permet de sélectionner un processeur qui est de base incompatible avec la machine sélectionné. Cependant, il pourrait y avoir des incompatibilités avec le BIOS de la machine ou autres logiciels.\n\nL'activation de cette configuration non officiellement prise en charge implique que tout rapport de bogue peut être fermé étant considéré comme invalide." +msgstr "Le filtre du type du processeur basé par rapport à la machine sélectionnée est désactivé pour cette machine émulée.\n\nCela permet de sélectionner un processeur qui est de base incompatible avec la machine sélectionnée. Cependant, il pourrait y avoir des incompatibilités avec le BIOS de la machine ou autres logiciels.\n\nL'activation de cette configuration non officiellement prise en charge implique que tout rapport de bogue peut être fermé étant considéré comme invalide." msgid "Continue" msgstr "Continuer" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pause de l'exécution" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Suppr" msgid "Press Ctrl+Alt+Del" msgstr "Appuyer sur Ctrl+Alt+Suppr" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Hard reset" msgid "Force shutdown" -msgstr "" +msgstr "Arrêt forcé" msgid "Start" -msgstr "" +msgstr "Démarrer" msgid "Not running" -msgstr "" +msgstr "Inactive" msgid "Running" -msgstr "" +msgstr "Active" msgid "Paused" -msgstr "" +msgstr "En pause" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "En attente" msgid "Powered Off" -msgstr "" +msgstr "Éteinte" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n démarrée" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n en pause" + +msgid "%n waiting" +msgstr "%n en attente" + +msgid "%1 total" +msgstr "%1 total" + +msgid "VMs: %1" +msgstr "Machines virtuelles: %1" msgid "System Directory:" -msgstr "" +msgstr "Répertoire du système:" msgid "Choose directory" -msgstr "" +msgstr "Sélectionner le répertoire" msgid "Choose configuration file" -msgstr "" +msgstr "Sélectionner le fichier de configuration" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Fichiers de configuration 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Échec de la lecture de la configuration" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Impossible d'ouvrir le fichier de configuration sélectionné pour lecture : %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Utilisez des expressions régulières dans le champ de recherche" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 machine(s) sont actuellement actives. Êtes-vous sûr de vouloir quitter le gestionnaire de machines virtuelles malgré tout ?" msgid "Add new system wizard" -msgstr "" +msgstr "Assistant pour ajouter un nouveau système" msgid "Introduction" -msgstr "" +msgstr "Introduction" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Cela vous aidera à ajouter un nouveau système à 86Box." msgid "New configuration" -msgstr "" +msgstr "Nouvelle configuration" msgid "Complete" -msgstr "" +msgstr "Terminer" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "L'assistant va maintenant lancer la configuration du nouveau système." msgid "Use existing configuration" -msgstr "" +msgstr "Utiliser la configuration existante" msgid "Type some notes here" -msgstr "" +msgstr "Tapez vos notes ici" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Collez le contenu du fichier de configuration existant dans la zone ci-dessous." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Charger la configuration à partir du fichier" msgid "System name" -msgstr "" +msgstr "Nom du système" msgid "System name:" -msgstr "" +msgstr "Nom du système:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Le nom du système ne peut pas contenir certains caractères" msgid "System name already exists" -msgstr "" +msgstr "Le nom du système existe déjà" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Veuillez saisir un répertoire pour le système" msgid "Directory does not exist" -msgstr "" +msgstr "Le répertoire n'existe pas" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Un nouveau répertoire pour le système sera créé dans le répertoire sélectionné ci-dessus" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Emplacement du système:" msgid "System name and location" -msgstr "" +msgstr "Nom et emplacement du système" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Entrez le nom du système et choisissez l'emplacement" msgid "Enter the name of the system" -msgstr "" +msgstr "Entrez le nom du système" msgid "Please enter a system name" -msgstr "" +msgstr "Veuillez entrer un nom de système" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Nom d'affichage (facultatif):" msgid "Display name:" -msgstr "" +msgstr "Nom d'affichage:" msgid "Set display name" -msgstr "" +msgstr "Définir le nom d'affichage" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Entrez le nouveau nom d'affichage (laissez vide pour réinitialiser)" msgid "Change &display name..." -msgstr "" +msgstr "Modifier le nom &d'affichage..." msgid "Context Menu" -msgstr "" +msgstr "Menu contextuel" msgid "&Open folder..." -msgstr "" +msgstr "&Ouvrir le dossier..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Ouvrez le bac de l'&imprimante..." msgid "Set &icon..." -msgstr "" +msgstr "Définir l'&icône..." msgid "Select an icon" -msgstr "" +msgstr "Sélectionnez une icône" msgid "C&lone..." -msgstr "" +msgstr "C&loner..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "La machine virtuelle \"%1\" (%2) sera clonée dans :" msgid "Directory %1 already exists" -msgstr "" +msgstr "Le répertoire %1 existe déjà" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Vous ne pouvez pas utiliser les caractères suivants dans le nom : %1" msgid "Clone" -msgstr "" +msgstr "Cloner" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Échec de la création du répertoire pour la machine virtuelle clonée" msgid "Failed to clone VM." -msgstr "" +msgstr "Échec du clonage de la machine virtuelle." msgid "Directory in use" -msgstr "" +msgstr "Répertoire utilisé" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Le répertoire sélectionné est déjà utilisé. Veuillez sélectionner un autre répertoire." msgid "Create directory failed" -msgstr "" +msgstr "Échec de la création du répertoire" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Impossible de créer le répertoire pour le nouveau système" msgid "Configuration write failed" -msgstr "" +msgstr "Échec de l'écriture de la configuration" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Impossible d'ouvrir le fichier de configuration à l'emplacement %1 pour l'écriture" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Erreur lors de l'ajout du système" msgid "Remove directory failed" -msgstr "" +msgstr "Échec de la suppression du répertoire" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Certains fichiers du répertoire de la machine n'ont pas pu être supprimés. Veuillez les supprimer manuellement." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Version" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Une mise à jour de 86Box est disponible : %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Une erreur s'est produite lors de la vérification des mises à jour : %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Une mise à jour de 86Box est disponible !" msgid "Warning" -msgstr "" +msgstr "Avertissement" msgid "&Kill" -msgstr "" +msgstr "Fo&rcer Extinction" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "La fermeture forcée d'une machine virtuelle peut entraîner une perte de données. Ne procédez ainsi que si le processus 86Box est bloqué.\n\nVoulez-vous vraiment fermer la machine virtuelle \"%1\" ?" msgid "&Delete" -msgstr "" +msgstr "&Supprimer" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Voulez-vous vraiment supprimer la machine virtuelle \"%1\" et tous ses fichiers ? Cette action ne peut pas être annulée !" msgid "Show &config file" -msgstr "" +msgstr "Afficher le fichier de &configuration" msgid "No screenshot" -msgstr "" +msgstr "Pas de capture d'écran" msgid "Search" -msgstr "" +msgstr "Rechercher" msgid "Searching for VMs..." -msgstr "" +msgstr "Recherche de machines virtuelles..." msgid "Found %1" -msgstr "" +msgstr "Trouvé %1" msgid "System" -msgstr "" +msgstr "Système" msgid "Storage" -msgstr "" +msgstr "Stockage" msgid "Disk %1: " -msgstr "" +msgstr "Disque %1: " msgid "No disks" -msgstr "" +msgstr "Pas de disques" msgid "Audio" -msgstr "" +msgstr "Audio" msgid "Audio:" -msgstr "" +msgstr "Audio:" msgid "ACPI shutdown" msgstr "Arrêt ACPI" @@ -1594,7 +1600,7 @@ msgid "Fast" msgstr "Rapide" msgid "&Auto-pause on focus loss" -msgstr "&Pause automatique à perte de focus" +msgstr "Pa&use automatique à perte de focus" msgid "WinBox is no longer supported" msgstr "WinBox n'est plus pris en charge" @@ -1626,9 +1632,6 @@ msgstr "Liste des dispositifs MCA :" msgid "&Tablet tool" msgstr "Outil Tablette" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "A propos de &Qt" @@ -1636,13 +1639,13 @@ msgid "&MCA devices..." msgstr "Dispositifs MCA..." msgid "Show non-&primary monitors" -msgstr "Afficher les moniteurs non primaires" +msgstr "Afficher les moniteurs non pr&imaires" msgid "Open screenshots &folder..." -msgstr "Ouvrir le dossier des captures d'écran..." +msgstr "Ouvrir le do&ssier des captures d'écran..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Appliquer le mode élargi plein écran lorsque la fenêtre est maximisée" +msgstr "Appli&quer le mode élargi plein écran lorsque la fenêtre est maximisée" msgid "&Cursor/Puck" msgstr "&Curseur/Palette" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Pilote NULL" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "Mio" msgid "GiB" -msgstr "" +msgstr "Gio" msgid "Network Card #1" msgstr "Carte réseau 1" @@ -1789,25 +1792,25 @@ msgid "Serial port passthrough 4" msgstr "Transfert du port série 4" msgid "Renderer &options..." -msgstr "Options du rendu..." +msgstr "&Options du rendu..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Clavier PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Clavier AT" msgid "AX Keyboard" -msgstr "" +msgstr "Clavier AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Clavier PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Clavier PS/55" msgid "Keys" -msgstr "" +msgstr "Touches" msgid "Logitech/Microsoft Bus Mouse" msgstr "Souris bus Logitech/Microsoft" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Souris série Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Souris bus Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Souris série Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Souris série Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Souris série Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Souris PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Souris PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (série)" msgid "Default Baud rate" -msgstr "" +msgstr "Vitesse de transmission par défaut" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Modem standard conforme à la norme Hayes" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Dispositif d'entrée MIDI" msgid "BIOS file" -msgstr "" +msgstr "Fichier BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Fichier BIOS (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Fichier BIOS (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Fichier BIOS (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Fichier BIOS (ROM 4)" msgid "BIOS address" msgstr "Adresse BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Adresse BIOS (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Adresse BIOS (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Adresse BIOS (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Adresse BIOS (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "Activer les écritures au ROM d'extension du BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Activer les écritures au ROM d'extension du BIOS (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Activer les écritures au ROM d'extension du BIOS (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Activer les écritures au ROM d'extension du BIOS (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Activer les écritures au ROM d'extension du BIOS (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Base du tampon graphique linéaire" msgid "Address" msgstr "Adresse" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ du port série" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ du port parallèle" msgid "BIOS Revision" -msgstr "Révision BIOS" +msgstr "Révision du BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Version du BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Langue du BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Unité d'extension IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "BASIC Cassette IBM" msgid "Translate 26 -> 17" msgstr "Traduire 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Taille du BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Taille du BIOS (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Taille du BIOS (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Taille du BIOS (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Taille du BIOS (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Mapper C0000-C7FFF en tant qu'UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Méthode d'interpolation" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Chargement dynamique des échantillons" msgid "Reverb Output Gain" msgstr "Gain de sortie réverbération" @@ -2098,7 +2101,7 @@ msgid "Phonebook File" msgstr "Fichier d'annuaire" msgid "Telnet emulation" -msgstr "Émulation de Telnet" +msgstr "Émulation Telnet" msgid "RAM Address" msgstr "Adresse RAM" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Activer le port de jeu" msgid "SID Model" -msgstr "" +msgstr "Modèle SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Intensité du filtre SID" msgid "Surround module" msgstr "Module Surround" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Adresse SB" msgid "Adlib Address" -msgstr "" +msgstr "Adresse Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Utilisez le paramètre de l'EEPROM" msgid "WSS IRQ" msgstr "IRQ WSS" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Mélanger" msgid "Font" -msgstr "" +msgstr "Police" msgid "Bilinear filtering" msgstr "Filtrage bilinéaire" msgid "Video chroma-keying" -msgstr "" +msgstr "Incrustation vidéo par chrominance" msgid "Dithering" msgstr "Tramage" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Mode EMS" msgid "EMS Address" -msgstr "" +msgstr "Adresse EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Adresse EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Adresse EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Taille de la mémoire EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Taille de la mémoire EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Taille de la mémoire EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Activer EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Activer EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Activer EMS 2" msgid "Address for > 2 MB" msgstr "Adresse pour > 2 MB" @@ -2442,6 +2445,9 @@ msgstr "256 Ko" msgid "Composite" msgstr "Composite" +msgid "True color" +msgstr "Couleur réelle" + msgid "Old" msgstr "Ancien" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Interpolation linéaire" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Dispose d'un jeu de caractères secondaire 8x8" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Dispose d'une carte fille Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Contraste monochrome alternatif" msgid "128 KB" msgstr "128 Ko" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Gris" msgid "Grayscale" -msgstr "" +msgstr "Niveaux de gris" msgid "Color" msgstr "Couleur" @@ -2536,25 +2542,25 @@ msgid "Bochs latest" msgstr "Bochs dernière" msgid "Apply overscan deltas" -msgstr "" +msgstr "Appliquer les deltas d'overscan" msgid "Mono Interlaced" -msgstr "" +msgstr "Monochrome entrelacé" msgid "Mono Non-Interlaced" msgstr "Monochrome non entrelacé" msgid "Color Interlaced" -msgstr "Couleur entrelacée" +msgstr "Couleur entrelacé" msgid "Color Non-Interlaced" -msgstr "Couleur non entrelacée" +msgstr "Couleur non entrelacé" msgid "3Dfx Voodoo Graphics" msgstr "Graphique 3dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 unités TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Pipeline nommé (serveur)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Pipeline nommé (client)" msgid "Host Serial Passthrough" msgstr "Transfert du port série de l'hôte" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Fabricant" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Extension mémoire générique PC/XT" @@ -2686,7 +2692,7 @@ msgid "Generic PC/AT Memory Expansion" msgstr "Extension mémoire générique PC/AT" msgid "Unable to find Dot-Matrix fonts" -msgstr "Impossible de trouver les polices matricielles." +msgstr "Impossible de trouver les polices matricielles" msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer." msgstr "Les polices TrueType dans le répertoire \"roms/printer/fonts\" sont nécessaires à l'émulation de l'imprimante générique ESC/P matricielle." @@ -2707,7 +2713,7 @@ msgid "Options" msgstr "Options" msgid "Model" -msgstr "" +msgstr "Modèle" msgid "Model:" msgstr "Modèle:" @@ -2752,163 +2758,199 @@ msgid "Could not load file %1" msgstr "Impossible de charger le fichier %1" msgid "Key Bindings:" -msgstr "" +msgstr "Raccourcis clavier:" msgid "Action" -msgstr "" +msgstr "Action" msgid "Keybind" -msgstr "" +msgstr "Raccourci clavier" msgid "Clear binding" -msgstr "" +msgstr "Supprimer le raccourci" msgid "Bind" -msgstr "" +msgstr "Lier" msgid "Bind Key" -msgstr "" +msgstr "Lier touche" msgid "Enter key combo:" -msgstr "" +msgstr "Entrez la combinaison de touches:" msgid "Bind conflict" -msgstr "" +msgstr "Conflit de raccourci" msgid "This key combo is already in use." -msgstr "" +msgstr "Cette combinaison de touches est déjà utilisée." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Envoyer Ctrl+Alt+Suppr" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Envoyer Ctrl+Alt+Échap" msgid "Toggle fullscreen" -msgstr "" +msgstr "Activer/désactiver le mode plein écran" msgid "Screenshot" -msgstr "" +msgstr "Capture d'écran" msgid "Release mouse pointer" -msgstr "" +msgstr "Relâcher le pointeur de la souris" msgid "Toggle pause" -msgstr "" +msgstr "Activer/désactiver la pause" msgid "Toggle mute" -msgstr "" +msgstr "Activer/désactiver le mode silencieux" msgid "Text files" -msgstr "" +msgstr "Fichiers texte" msgid "ROM files" -msgstr "" +msgstr "Fichiers ROM" msgid "SoundFont files" -msgstr "" +msgstr "Fichiers SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Commutateur local" msgid "Remote Switch" -msgstr "" +msgstr "Commutateur distant" msgid "Switch:" -msgstr "" +msgstr "Commutateur:" msgid "Hub Mode" -msgstr "" +msgstr "Mode concentrateur" msgid "Hostname:" -msgstr "" +msgstr "Nom d'hôte:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Effacer la mémoire NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Cela supprimera tous les fichiers NVRAM (et associés) de la machine virtuelle situés dans le sous-répertoire \"nvr\". Vous devrez reconfigurer les paramètres du BIOS (et éventuellement d'autres périphériques à l'intérieur de la machine virtuelle) si nécessaire. \n\nÊtes-vous sûr de vouloir effacer tout le contenu NVRAM de la machine virtuelle \"%1\" ?" msgid "Success" -msgstr "" +msgstr "Succès" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Le contenu de la NVRAM de la machine virtuelle \"%1\" a été effacé avec succès" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Une erreur s'est produite lors de la tentative d'effacement du contenu NVRAM de la machine virtuelle \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Gestionnaire de machines virtuelles de %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disque(s)" msgid "Unknown Status" -msgstr "" +msgstr "Statut inconnu" msgid "No Machines Found!" -msgstr "" +msgstr "Aucune machine trouvée !" msgid "Check for updates on startup" -msgstr "" +msgstr "Vérifier les mises à jour au démarrage" msgid "Unable to determine release information" -msgstr "" +msgstr "Impossible de déterminer les informations relatives à la version" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Une erreur s'est produite lors de la vérification des mises à jour :\n\n%1\n\nVeuillez réessayer plus tard." msgid "Update check complete" -msgstr "" +msgstr "Vérification des mises à jour terminée" + +msgid "stable" +msgstr "stable" + +msgid "beta" +msgstr "bêta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Vous utilisez la dernière version %1 de 86Box : %2" msgid "version" -msgstr "" +msgstr "version" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Vous utilisez actuellement la version %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "La version %1 est désormais disponible." + +msgid "You are currently running build %1." +msgstr "Vous exécutez actuellement le build %1." + +msgid "Build %1 is now available." +msgstr "Le Build %1 est désormais disponible." + +msgid "Would you like to visit the download page?" +msgstr "Souhaitez-vous visiter la page de téléchargement ?" msgid "Visit download page" -msgstr "" +msgstr "Visiter la page de téléchargement" msgid "Update check" -msgstr "" +msgstr "Vérification des mises à jour" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Recherche de mises à jour..." msgid "86Box Update" -msgstr "" +msgstr "Mise à jour de 86Box" msgid "Release notes:" -msgstr "" +msgstr "Notes de mise à jour :" -#~ msgid "HD Controller:" -#~ msgstr "Contrôleur HD:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Lecteurs ZIP:" +msgid "Virtual machine crash" +msgstr "Panne de la machine virtuelle" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Le processus de la machine virtuelle \"%1\" s'est arrêté de manière inattendue avec le code de sortie %2." -#~ msgid "ZIP images" -#~ msgstr "Images ZIP" +msgid "The system will not be added." +msgstr "Le système ne sera pas ajouté." + +msgid "&Update mouse every CPU frame" +msgstr "&Mettre à jour le statut souris à chaque frame CPU" + +msgid "Hue" +msgstr "Teinte" + +msgid "Saturation" +msgstr "Saturation" + +msgid "Contrast" +msgstr "Contraste" + +msgid "Brightness" +msgstr "Luminosité" + +msgid "Sharpness" +msgstr "Netteté" + +msgid "&CGA composite settings..." +msgstr "Réglages du mode composite &CGA..." + +msgid "CGA composite settings" +msgstr "Réglages du mode composite CGA" diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po index 694c61ad2..bdb980839 100644 --- a/src/qt/languages/hr-HR.po +++ b/src/qt/languages/hr-HR.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Pauza" msgid "Pause" -msgstr "" +msgstr "Pauza" msgid "Re&sume" -msgstr "" +msgstr "Na&stavi" msgid "E&xit" msgstr "Iz&laz" @@ -57,9 +57,6 @@ msgstr "&Renderer" msgid "&Qt (Software)" msgstr "&Qt (Softver)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 jezgra)" @@ -69,7 +66,7 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "Odrediti veličinu..." -msgid "F&orce 4:3 display ratio" +msgid "Force &4:3 display ratio" msgstr "&4:3 omjer prikaza" msgid "&Window scale factor" @@ -138,8 +135,8 @@ msgstr "&Cijelobrojno skaliranje" msgid "4:&3 Integer scale" msgstr "4:&3 Cijelobrojno skaliranje" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGA postavke" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGA postavke" msgid "&Inverted VGA monitor" msgstr "&Obrni boje zaslona VGA" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB u &boji" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (bez smeđe)" msgid "&RGB Grayscale" msgstr "&RGB u nijansama sive boje" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Generični RGBI monitor u boji" msgid "&Amber monitor" msgstr "&Jantarni zaslon" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Opcije..." msgid "Settings..." -msgstr "" +msgstr "Opcije..." msgid "&Update status bar icons" msgstr "&Ažuriraj ikone statusnog redka" @@ -223,7 +220,7 @@ msgid "End trace" msgstr "&Svrši praćenje" msgid "&Help" -msgstr "&Pomoć" +msgstr "P&omoć" msgid "&Documentation..." msgstr "&Dokumentacija..." @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Namjesti" msgid "CPU:" -msgstr "" +msgstr "Procesor:" msgid "CPU type:" msgstr "Tip procesora:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Dinamički rekompilator" msgid "CPU frame size" -msgstr "" +msgstr "Veličina blokova procesora" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Veći blokovi (manje glatko)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Manji blokovi (glatkije)" msgid "Video:" msgstr "Video:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA grafika" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Grafika adaptera za prikaz IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Tipkovinca:" msgid "Keyboard" -msgstr "" +msgstr "Tipkovnica" msgid "Mouse:" msgstr "Miš:" msgid "Mouse" -msgstr "" +msgstr "Miš" msgid "Joystick:" msgstr "Palica za igru:" msgid "Joystick" -msgstr "" +msgstr "Palica za igru" msgid "Joystick 1..." msgstr "Palica za igru 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Ulazni uređaj MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Izlaz MIDI:" msgid "Standalone MPU-401" msgstr "Samostalni MPU-401" @@ -519,6 +516,9 @@ msgstr "Uređaj LPT3:" msgid "LPT4 Device:" msgstr "Uređaj LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA ECP unutrašnjeg LPT-a:" + msgid "Serial port 1" msgstr "Serijska vrata 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Kontroler diskete:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Kontroler CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Tercijarni IDE kontroler" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Kvaternarni IDE kontroler" msgid "Hard disk" -msgstr "" +msgstr "Tvrdi disk" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Tvrdi diskovi:" msgid "Firmware Version" -msgstr "" +msgstr "Verzija firmvera" msgid "&New..." msgstr "&Novi..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "MO pogoni:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Izmjenjivi diskovi:" msgid "Removable disk drives:" -msgstr "" +msgstr "Pogoni izmjenjivih diskova:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Proširenje memorije ISA" msgid "ISA ROM Cards" -msgstr "" +msgstr "Kartice ISA sa ROM-om" msgid "Card 1:" msgstr "Kartica 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Kartica 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Generična kartica ISA s ROM-om" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Generična kartica ISA s dva ROM-a" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Generična kartica ISA s četiri ROM-a" msgid "ISABugger device" msgstr "Uređaj ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Brzina" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Izmjenjivi disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Izmjenjivi disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Slike izmjenjivih diskova" msgid "Image %1" -msgstr "" +msgstr "Slika %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box nije mogao pronaći upotrebljive ROM datoteke.\n\nMolimte posjetite sknite paket s ROM datotekama i ekstrahirajte paket u mapu \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Vrata (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Vrata" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Serijska vrata:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Paralelna vrata:" msgid "Storage controllers" msgstr "Kontroleri za diskove" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Tvrdi diskovi" msgid "Disks:" -msgstr "" +msgstr "Diskovi:" msgid "Floppy:" -msgstr "" +msgstr "Diskete:" msgid "Controllers:" -msgstr "" +msgstr "Kontroleri:" msgid "Floppy & CD-ROM drives" msgstr "Floppy & CD-ROM pogoni" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Ostali periferni uređaji" msgid "Other devices" -msgstr "" +msgstr "Ostali uređaji" msgid "Click to capture mouse" msgstr "Kliknite da uhvatite miš" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Gamepad(ovi) s 2 tipke" msgid "2-button flight yoke" -msgstr "" +msgstr "Jaram za letenje s 2 tipke" msgid "4-button gamepad" -msgstr "" +msgstr "Gamepad s 4 tipke" msgid "4-button flight yoke" -msgstr "" +msgstr "Jaram za letenje s 4 tipke" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Jaram za letenje s 2 tipke i gasom" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Jaram za letenje s 4 tipke i gasom" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volan Win95 (3 osi, 4 tipke)" msgid "None" msgstr "Bez" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Uunutarnji uređaj" msgid "&File" -msgstr "" +msgstr "&Datoteka" msgid "&New machine..." -msgstr "" +msgstr "&Novi sistem..." msgid "&Check for updates..." -msgstr "" +msgstr "&Provjeri ažuriranja..." msgid "Exit" msgstr "Izlazi" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pauziraj" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Stisni Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Ponovno pokretanje" msgid "Force shutdown" -msgstr "" +msgstr "Prisilno isključi" msgid "Start" -msgstr "" +msgstr "Pokreni" msgid "Not running" -msgstr "" +msgstr "Se ne pokreće" msgid "Running" -msgstr "" +msgstr "Se pokreće" msgid "Paused" -msgstr "" +msgstr "Pauziran" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Čeka" msgid "Powered Off" -msgstr "" +msgstr "Isključen" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n se ppokreće" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n pauziranih" + +msgid "%n waiting" +msgstr "%n čeka" + +msgid "%1 total" +msgstr "%1 ukupno" + +msgid "VMs: %1" +msgstr "Virtualnih sistema: %1" msgid "System Directory:" -msgstr "" +msgstr "Sistemski direktorij:" msgid "Choose directory" -msgstr "" +msgstr "Odaberite direktorij" msgid "Choose configuration file" -msgstr "" +msgstr "Odaberite datoteku s konfiguracijom" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Konfiguracijske datoteke programa 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Čitanje konfiguracije nije uspjelo" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Nije moguće otvoriti odabranu konfiguracijsku datoteku za čitanje: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "U polju za pretraživanje koristite regularne izraze" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "Broj trenutno aktivnih računala je %1. Jeste li sigurni da ipak želite izaći iz upravitelja virtualnih sistema?" msgid "Add new system wizard" -msgstr "" +msgstr "Čarobnjak za dodavanje novog sistema" msgid "Introduction" -msgstr "" +msgstr "Uvod" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Ovo će vam pomoći da dodate novi sistem u 86Box." msgid "New configuration" -msgstr "" +msgstr "Nova konfiguracija" msgid "Complete" -msgstr "" +msgstr "Završi" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Čarobnjak će sada pokrenuti konfiguraciju za novi sustav." msgid "Use existing configuration" -msgstr "" +msgstr "Koristi postojeću konfiguraciju" msgid "Type some notes here" -msgstr "" +msgstr "Ovdje upišite neke bilješke" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Zalijepite sadržaj postojeće konfiguracijske datoteke u okvir ispod." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Učitaj konfiguraciju iz datoteke" msgid "System name" -msgstr "" +msgstr "Naziv sistema" msgid "System name:" -msgstr "" +msgstr "Naziv sistema:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Naziv sistema ne može sadržavati određene znakove" msgid "System name already exists" -msgstr "" +msgstr "Naziv sistema već postoji" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Molimo unesite direktorij za sistem" msgid "Directory does not exist" -msgstr "" +msgstr "Direktorij ne postoji" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Novi direktorij za sistem bit će kreiran u odabranom direktoriju iznad" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Lokacija sistema:" msgid "System name and location" -msgstr "" +msgstr "Naziv i lokacija sistema" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Unesite naziv sistema i odaberite lokaciju" msgid "Enter the name of the system" -msgstr "" +msgstr "Unesite naziv sistema" msgid "Please enter a system name" -msgstr "" +msgstr "Unesite naziv sistema" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Prikazno ime (neobavezno):" msgid "Display name:" -msgstr "" +msgstr "Prikazno ime:" msgid "Set display name" -msgstr "" +msgstr "Postavi prikazno ime" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Unesite novo prikazno ime (prazno za ponovo postaviti)" msgid "Change &display name..." -msgstr "" +msgstr "Promijeni &prikazno ime..." msgid "Context Menu" -msgstr "" +msgstr "Kontekstni izbornik" msgid "&Open folder..." -msgstr "" +msgstr "&Otvori mapu..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Otvori ladicu &pisača..." msgid "Set &icon..." -msgstr "" +msgstr "Postavi &ikonu..." msgid "Select an icon" -msgstr "" +msgstr "Odaberite ikonu" msgid "C&lone..." -msgstr "" +msgstr "K&loniraj..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtualni sistem \"%1\" (%2) bit će kloniran u:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Direktorij %1 već postoji" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "U nazivu ne možete koristiti sljedeće znakove: %1" msgid "Clone" -msgstr "" +msgstr "Kloniraj" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Nije uspjelo stvaranje direktorija za klonirani VM" msgid "Failed to clone VM." -msgstr "" +msgstr "Kloniranje virtualnog stroja nije uspjelo." msgid "Directory in use" -msgstr "" +msgstr "Direktorij u uporebi" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Odabrani direktorij je već u upotrebi. Molimo odaberite drugi direktorij." msgid "Create directory failed" -msgstr "" +msgstr "Izrada direktorija nije uspjela" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Nije moguće stvoriti direktorij za novi sustav" msgid "Configuration write failed" -msgstr "" +msgstr "Pisanje konfiguracije nije uspjelo" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Nije moguće otvoriti konfiguracijsku datoteku na %1 za pisanje" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Pogreška pri dodavanju sistema" msgid "Remove directory failed" -msgstr "" +msgstr "Uklanjanje direktorija nije uspjelo" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Neke datoteke u direktoriju sistema nisu mogle biti izbrisane. Izbrišite ih ručno." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Verzija" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Dostupno je ažuriranje za 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Došlo je do greške prilikom provjere ažuriranja: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Dostupno je ažuriranje za 86Box!" msgid "Warning" -msgstr "" +msgstr "Upozorenje" msgid "&Kill" -msgstr "" +msgstr "&Prisilno prekini" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Prisilno prekidanje virtualnog stroja može uzrokovati gubitak podataka. Učinite to samo ako se 86Box proces zaglavi.\n\nŽelite li zaista ubiti virtualni stroj \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Izbriši" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Želite li zaista izbrisati virtualni stroj \"%1\" i sve njegove datoteke? Ovu radnju nije moguće poništiti!" msgid "Show &config file" -msgstr "" +msgstr "Prikaži &konfiguracijsku datoteku" msgid "No screenshot" -msgstr "" +msgstr "Nema snimke zaslona" msgid "Search" -msgstr "" +msgstr "Pretraživanje" msgid "Searching for VMs..." -msgstr "" +msgstr "Traženje virtualnih sistema..." msgid "Found %1" -msgstr "" +msgstr "Pronađeno %1" msgid "System" -msgstr "" +msgstr "Sistem" msgid "Storage" -msgstr "" +msgstr "Diskovi" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1: " msgid "No disks" -msgstr "" +msgstr "Nema diskova" msgid "Audio" -msgstr "" +msgstr "Zvuk" msgid "Audio:" -msgstr "" +msgstr "Zvuk:" msgid "ACPI shutdown" msgstr "ACPI bazirano gašenje" @@ -1626,9 +1632,6 @@ msgstr "Spisak uređaja MCA:" msgid "&Tablet tool" msgstr "Alat za tablet" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "O programu &Qt" @@ -1672,13 +1675,13 @@ msgid "Null Driver" msgstr "Nulti upravljački program" msgid "NIC:" -msgstr "" +msgstr "Mrežna kartica:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Mrežna kartica %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Mrežna kartica %1 (%2) %3" msgid "Render behavior" msgstr "Ponašanje rendera" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Mrežna kartica 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "Opcije rendera..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Tipkovnica PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Tipkovnica AT" msgid "AX Keyboard" -msgstr "" +msgstr "Tipkovnica AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Tipkovnica PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Tipkovnica PS/55" msgid "Keys" -msgstr "" +msgstr "Tipke" msgid "Logitech/Microsoft Bus Mouse" msgstr "Sabirnički miš Logitech/Microsoft" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Serijski miš Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Sabirnički miš Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Serijski miš Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Serijski miš Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Serijski miš Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Miš PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Miš PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (serijski)" msgid "Default Baud rate" -msgstr "" +msgstr "Zadana brzina prijenosa podataka" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Standardni modem, usklađen s standardom Hayesom" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Ulazni uređaj MIDI" msgid "BIOS file" -msgstr "" +msgstr "Datoteka BIOS-a" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM 4)" msgid "BIOS address" msgstr "Adresa BIOS-a" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Adresa BIOS-a (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Adresa BIOS-a (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Adresa BIOS-a (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Adresa BIOS-a (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "Omogući pisanje u ROM proširenja BIOS-a" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Omogući pisanje u ROM proširenja BIOS-a (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Omogući pisanje u ROM proširenja BIOS-a (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Omogući pisanje u ROM proširenja BIOS-a (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Omogući pisanje u ROM proširenja BIOS-a (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Osnovna adresa linearnog framebuffera" msgid "Address" msgstr "Adresa" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ serijskih vrata" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ paralelnih vrata" msgid "BIOS Revision" msgstr "Revizija BIOS-a" msgid "BIOS Version" -msgstr "" +msgstr "Verzija BIOS-a" msgid "BIOS Language" -msgstr "" +msgstr "Jezik BIOS-a" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Jedinica za proširenj IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "Kasetni BASIC IBM" msgid "Translate 26 -> 17" msgstr "Prevedi 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Veličina BIOS-a" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Veličina BIOS-a (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Veličina BIOS-a (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Veličina BIOS-a (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Veličina BIOS-a (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Mapiraj C0000-C7FFF kao UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Metoda interpolacije" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dinamičko učitavanje uzoraka" msgid "Reverb Output Gain" msgstr "Pojačavanje izlaza odjeka" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Omogoći vrata za igru" msgid "SID Model" -msgstr "" +msgstr "Model SID-a" msgid "SID Filter Strength" -msgstr "" +msgstr "Jačina filtra SID-a" msgid "Surround module" msgstr "Modul Surround" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Adresa SB-a" msgid "Adlib Address" -msgstr "" +msgstr "Adresa Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Koristi postavku iz EEPROM-a" msgid "WSS IRQ" msgstr "IRQ WSS-a" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Miješaj" msgid "Font" -msgstr "" +msgstr "Font" msgid "Bilinear filtering" msgstr "Bilinearno filtriranje" msgid "Video chroma-keying" -msgstr "" +msgstr "Kroma ključanje prikaza" msgid "Dithering" msgstr "Podrhtavanje" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Načina EMS" msgid "EMS Address" -msgstr "" +msgstr "Adresa EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Adresa EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Adresa EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Veličina memorije EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Veličina memorije EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Veličina memorije EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Omogući EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Omogući EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Omogući EMS 2" msgid "Address for > 2 MB" msgstr "Adresa za > 2 MB" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "Pet + kotač" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Pet + 2 kotača" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 serijski / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Kompozitni" +msgid "True color" +msgstr "Prave boje" + msgid "Old" msgstr "Stara" @@ -2476,25 +2482,25 @@ msgid "Linear interpolation" msgstr "Linearna interpolacija" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Ima sekundarni skup znakova 8x8" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Ima kćerinsku ploču Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternativni crno-bijeli kontrast" msgid "128 KB" msgstr "128 KB" msgid "Monochrome (5151/MDA) (white)" -msgstr "Crno-biljeli (5151/MDA) (bijeli)" +msgstr "Crno-bijeli (5151/MDA) (bijeli)" msgid "Monochrome (5151/MDA) (green)" -msgstr "Crno-biljeli (5151/MDA) (zeleni)" +msgstr "Crno-bijeli (5151/MDA) (zeleni)" msgid "Monochrome (5151/MDA) (amber)" -msgstr "Crno-biljeli (5151/MDA) (jantarni)" +msgstr "Crno-bijeli (5151/MDA) (jantarni)" msgid "Color 40x25 (5153/CGA)" msgstr "Bojni 40x25 (5153/CGA)" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Siva" msgid "Grayscale" -msgstr "" +msgstr "Nijanse sive" msgid "Color" msgstr "Bojna" @@ -2536,13 +2542,13 @@ msgid "Bochs latest" msgstr "Bochs poslednji" msgid "Apply overscan deltas" -msgstr "" +msgstr "Primijeni delte viška slike" msgid "Mono Interlaced" -msgstr "" +msgstr "Crno-bijeli s preplitanjem" msgid "Mono Non-Interlaced" -msgstr "Crno-biljeli bez preplitanja" +msgstr "Crno-bijeli bez preplitanja" msgid "Color Interlaced" msgstr "Bojni s preplitanjem" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3dfx Voodoo grafika" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 jednote TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Imenovani vod (server)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Imenovani vod (klijent)" msgid "Host Serial Passthrough" msgstr "Prolaz serijskih vrata nositelja" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "Visoki učinak na brzinu izvršavanja" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Disk RAM (najviša brzina)" +msgstr "[Generični] Disk RAM (najviša brzina)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Generični] 1989 (3500 okr./min)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Generični] 1992 (3600 okr./min)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Generični] 1994 (4500 okr./min)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Generični] (5400 okr./min)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Generični] (5400 okr./min)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Generični] (5400 okr./min)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Generični] (7200 okr./min)" msgid "IBM 8514/A clone (ISA)" msgstr "Klon IBM 8514/A (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Proizvođać" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Generičko proširenje memorije PC/XT" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "TrueType fontovi u mapi \"roms/printer/fonts\" potrebni su za emulaciju generičnog matričnog pisača ESC/P." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Blokiraj multimedijske tipke" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Zatraži potvrdu prije spremanja opcija" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Zatraži potvrdu prije ponovnog pokretanja" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Zatraži potvrdu prije izlaza" msgid "Options" -msgstr "" +msgstr "Opcije" msgid "Model" -msgstr "" +msgstr "Model" msgid "Model:" -msgstr "" +msgstr "Model:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Nije uspjelo inicijaliziranje renderera Vulkan." msgid "GLSL Error" -msgstr "" +msgstr "Greška GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "Nije moguće učitati shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Potrebna je OpenGL verzija 3.0 ili novija. Trenutna GLSL verzija je %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Nije moguće učitati teksturu: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Nije moguće kompajlirati shader:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Program nije povezan:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Upravitelj shadera" msgid "Shader Configuration" -msgstr "" +msgstr "Konfiguracija shadera" msgid "Add" -msgstr "" +msgstr "Dodaj" msgid "Move up" -msgstr "" +msgstr "Pomakni gore" msgid "Move down" -msgstr "" +msgstr "Pomakni dolje" msgid "Could not load file %1" -msgstr "" +msgstr "Nije moguće učitati datoteku %1" msgid "Key Bindings:" -msgstr "" +msgstr "Veze tipki:" msgid "Action" -msgstr "" +msgstr "Akcija" msgid "Keybind" -msgstr "" +msgstr "Povezivanje tipki" msgid "Clear binding" -msgstr "" +msgstr "Očisti vezivanje" msgid "Bind" -msgstr "" +msgstr "Poveži" msgid "Bind Key" -msgstr "" +msgstr "Poveži tipku" msgid "Enter key combo:" -msgstr "" +msgstr "Unesite kombinaciju tipki:" msgid "Bind conflict" -msgstr "" +msgstr "Sukob vezanja" msgid "This key combo is already in use." -msgstr "" +msgstr "Ova kombinacija tipki je već u upotrebi." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Pošalji Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Pošalji Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Uključi/isključi cijelozaslonski način" msgid "Screenshot" -msgstr "" +msgstr "Snimka zaslona" msgid "Release mouse pointer" -msgstr "" +msgstr "Otpusti pokazivač miša" msgid "Toggle pause" -msgstr "" +msgstr "Uključi/isključi pauzu" msgid "Toggle mute" -msgstr "" +msgstr "Uključi/isključi zvuk" msgid "Text files" -msgstr "" +msgstr "Tekstualne datoteke" msgid "ROM files" -msgstr "" +msgstr "Datoteke ROM" msgid "SoundFont files" -msgstr "" +msgstr "Datoteke SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Lokalni prekidač" msgid "Remote Switch" -msgstr "" +msgstr "Udaljeni prekidač" msgid "Switch:" -msgstr "" +msgstr "Prekidač:" msgid "Hub Mode" -msgstr "" +msgstr "Način čvorišta" msgid "Hostname:" -msgstr "" +msgstr "Naziv hosta:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Obriši NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Ovim će se izbrisati sve NVRAM (i povezane) datoteke virtualnog sistema koji se nalazi u poddirektoriju \"nvr\". Morat ćete ponovno konfigurirati postavke BIOS-a (i eventualno drugih uređaja unutar virtualnog sistema) ako je primjenjivo.\n\nJeste li sigurni da želite izbrisati sav NVRAM sadržaj virtualnog sistema \"%1\"?" msgid "Success" -msgstr "" +msgstr "Uspjeh" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Uspješno obrisan sadržaj NVRAM-a virtualnog sistema \"%1\"" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Došlo je do pogreške pri pokušaju brisanja NVRAM sadržaja virtualnog sistema \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Upravitelj virtualnih sistema programa %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disk(ova)" msgid "Unknown Status" -msgstr "" +msgstr "Nepoznat status" msgid "No Machines Found!" -msgstr "" +msgstr "Nisu pronađeni sistemovi!" msgid "Check for updates on startup" -msgstr "" +msgstr "Provjeri ažuriranja pri pokretanju" msgid "Unable to determine release information" -msgstr "" +msgstr "Nije moguće utvrditi informacije o izdanju" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Došlo je do pogreške prilikom provjere ažuriranja:\n\n%1\n\nMolimo pokušajte ponovno kasnije." msgid "Update check complete" -msgstr "" +msgstr "Provjera ažuriranja dovršena" + +msgid "stable" +msgstr "stabilnu" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Koristite najnoviju %1 verziju programa 86Box: %2" msgid "version" -msgstr "" +msgstr "verzija" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Trenutno koristite verziju %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Verzija %1 je sada dostupna." + +msgid "You are currently running build %1." +msgstr "Trenutno koristite build %1." + +msgid "Build %1 is now available." +msgstr "Build %1 je sada dostupan." + +msgid "Would you like to visit the download page?" +msgstr "Želite li posjetiti stranicu za preuzimanje?" msgid "Visit download page" -msgstr "" +msgstr "Posjetiti stranicu za preuzimanje" msgid "Update check" -msgstr "" +msgstr "Provjera ažuriranja" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Provjera ažuriranja..." msgid "86Box Update" -msgstr "" +msgstr "Ažuriranje programa 86Box" msgid "Release notes:" -msgstr "" +msgstr "Bilješke o izdanju:" -#~ msgid "HD Controller:" -#~ msgstr "Kontroler tvrdog diska:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP pogoni:" +msgid "Virtual machine crash" +msgstr "Neočekivani prekid rada virtualnog sistema" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Proces virtualnog sistema \"%1\" neočekivano je završio s izlaznim kodom %2." -#~ msgid "ZIP images" -#~ msgstr "ZIP slike" +msgid "The system will not be added." +msgstr "Sistem neće biti dodan." + +msgid "&Update mouse every CPU frame" +msgstr "&Ažuriraj status miša kod skavog bloka procesora" + +msgid "Hue" +msgstr "Boja" + +msgid "Saturation" +msgstr "Zasićenost" + +msgid "Contrast" +msgstr "Konstrast" + +msgid "Brightness" +msgstr "Svjetlina" + +msgid "Sharpness" +msgstr "Oštrina" + +msgid "&CGA composite settings..." +msgstr "Opcije kompozitnog načina &CGA..." + +msgid "CGA composite settings" +msgstr "Opcije kompozitnog načina CGA" diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po index 2ce8571a8..43fe84461 100644 --- a/src/qt/languages/it-IT.po +++ b/src/qt/languages/it-IT.po @@ -13,7 +13,7 @@ msgid "&Keyboard requires capture" msgstr "&Tastiera richiede la cattura" msgid "&Right CTRL is left ALT" -msgstr "&CTRL destro è ALT sinistro" +msgstr "CTRL &destro è ALT sinistro" msgid "&Hard Reset..." msgstr "&Riavvia..." @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Pausa" msgid "Pause" -msgstr "" +msgstr "Pausa" msgid "Re&sume" -msgstr "&Riprendi" +msgstr "R&iprendi" msgid "E&xit" msgstr "E&sci" @@ -40,7 +40,7 @@ msgid "&View" msgstr "&Visualizza" msgid "&Hide status bar" -msgstr "&Nascondi barra di stato" +msgstr "Nascondi ba&rra di stato" msgid "Hide &toolbar" msgstr "Nascondi &barra degli strumenti" @@ -57,9 +57,6 @@ msgstr "Re&nderizzatore" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -67,13 +64,13 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify &dimensions..." -msgstr "Specifica dimensioni..." +msgstr "Specifica dim&ensioni..." -msgid "F&orce 4:3 display ratio" -msgstr "F&orza rapporto d'aspetto 4:3" +msgid "Force &4:3 display ratio" +msgstr "Forza rapporto d'aspetto &4:3" msgid "&Window scale factor" -msgstr "&Fattore di scala della finestra" +msgstr "Fa&ttore di scala della finestra" msgid "&0.5x" msgstr "&0,5x" @@ -106,7 +103,7 @@ msgid "&8x" msgstr "&8x" msgid "Fi<er method" -msgstr "Metodo filtro" +msgstr "Metodo fi<ro" msgid "&Nearest" msgstr "&Più vicino" @@ -121,7 +118,7 @@ msgid "&Fullscreen" msgstr "&Schermo intero" msgid "Fullscreen &stretch mode" -msgstr "Modalità adattamento &schermo intero" +msgstr "Modalità &adattamento schermo intero" msgid "&Full screen stretch" msgstr "&Adatta a schermo intero" @@ -130,7 +127,7 @@ msgid "&4:3" msgstr "&4:3" msgid "&Square pixels (Keep ratio)" -msgstr "&Pixel quadrati (mantiene l'aspetto)" +msgstr "&Pixel quadrati (mantieni proporzioni)" msgid "&Integer scale" msgstr "&Scala intera" @@ -138,14 +135,14 @@ msgstr "&Scala intera" msgid "4:&3 Integer scale" msgstr "Scala intera 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "Impostazioni E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Impostazioni EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Monitor VGA invertito" msgid "VGA screen &type" -msgstr "Schermi VGA &" +msgstr "Schermi &VGA" msgid "RGB &Color" msgstr "RGB a &Colori" @@ -160,13 +157,13 @@ msgid "Generic RGBI color monitor" msgstr "Monitor a colori RGBI generico" msgid "&Amber monitor" -msgstr "&Monitor ambra" +msgstr "Monitor &ambra" msgid "&Green monitor" -msgstr "&Monitor verde" +msgstr "Monitor &verde" msgid "&White monitor" -msgstr "&Monitor bianco" +msgstr "Monitor &bianco" msgid "Grayscale &conversion type" msgstr "Conversione &scala di grigi" @@ -184,7 +181,7 @@ msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" msgstr "Sovrascansione CGA/PCjr/Tandy/E&GA/(S)VGA" msgid "Change contrast for &monochrome display" -msgstr "Modifica il contrasto per &schermi monocromatici" +msgstr "Modifica il contrasto per schermi &monocromatici" msgid "&Media" msgstr "&Dispositivi" @@ -196,13 +193,13 @@ msgid "&Settings..." msgstr "&Impostazioni..." msgid "Settings..." -msgstr "" +msgstr "Impostazioni..." msgid "&Update status bar icons" msgstr "&Aggiorna icone della barra di stato" msgid "Take s&creenshot" -msgstr "Cattura schermata" +msgstr "&Cattura schermata" msgid "S&ound" msgstr "A&udio" @@ -211,7 +208,7 @@ msgid "&Preferences..." msgstr "&Preferenze..." msgid "Enable &Discord integration" -msgstr "Abilita &integrazione Discord" +msgstr "Abilita integrazione &Discord" msgid "Sound &gain..." msgstr "Guadagno &suono..." @@ -223,7 +220,7 @@ msgid "End trace" msgstr "Fine traccia" msgid "&Help" -msgstr "&Aiuto" +msgstr "Ai&uto" msgid "&Documentation..." msgstr "&Documentazione..." @@ -250,7 +247,7 @@ msgid "&Rewind to the beginning" msgstr "Ri&avvolgi all'inizio" msgid "&Fast forward to the end" -msgstr "A&vanti veloce alla fine" +msgstr "A&vanti veloce fino alla fine" msgid "E&ject" msgstr "&Espelli" @@ -307,7 +304,7 @@ msgid "Preferences" msgstr "Preferenze" msgid "Sound Gain" -msgstr "Guadagno del suono" +msgstr "Guadagno suono" msgid "New Image" msgstr "Nuova immagine" @@ -358,13 +355,13 @@ msgid "Machine type:" msgstr "Tipo di macchina:" msgid "Machine:" -msgstr "Scheda madre:" +msgstr "Macchina:" msgid "Configure" msgstr "Configura" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "Tipo di CPU:" @@ -391,25 +388,25 @@ msgid "Time synchronization" msgstr "Sincronizzazione dell'ora" msgid "Disabled" -msgstr "Disabilitata" +msgstr "Disabilitato" msgid "Enabled (local time)" -msgstr "Abilitata (ora locale)" +msgstr "Abilitato (ora locale)" msgid "Enabled (UTC)" -msgstr "Abilitata (UTC)" +msgstr "Abilitato (UTC)" msgid "Dynamic Recompiler" msgstr "Ricompilatore dinamico" msgid "CPU frame size" -msgstr "Dimensione fotogrammi CPU" +msgstr "Dimensione blocchi CPU" msgid "Larger frames (less smooth)" -msgstr "Fotogrammi più grandi (meno fluido)" +msgstr "Blocchi più grandi (meno fluido)" msgid "Smaller frames (smoother)" -msgstr "Fotogrammi più piccoli (più fluido)" +msgstr "Blocchi più piccoli (più fluido)" msgid "Video:" msgstr "Video:" @@ -418,34 +415,34 @@ msgid "Video #2:" msgstr "Video #2:" msgid "Voodoo 1 or 2 Graphics" -msgstr "Grafica Voodoo 1 o 2" +msgstr "Scheda grafica Voodoo 1 o 2" msgid "IBM 8514/A Graphics" -msgstr "Grafica IBM 8514/A" +msgstr "Scheda grafica IBM 8514/A" msgid "XGA Graphics" -msgstr "Grafica XGA" +msgstr "Scheda grafica XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Scheda grafica IBM PS/55 Display Adapter" msgid "Keyboard:" msgstr "Tastiera:" msgid "Keyboard" -msgstr "" +msgstr "Tastiera" msgid "Mouse:" msgstr "Mouse:" msgid "Mouse" -msgstr "" +msgstr "Mouse" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -472,16 +469,16 @@ msgid "Sound card #4:" msgstr "Scheda audio #4:" msgid "MIDI Out Device:" -msgstr "Uscita MIDI:" +msgstr "Dispositivo uscita MIDI:" msgid "MIDI In Device:" -msgstr "Entrata MIDI:" +msgstr "Dispositivo ingresso MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Uscita MIDI:" msgid "Standalone MPU-401" -msgstr "MPU-401 autonomo" +msgstr "Scheda dedicata MPU-401" msgid "Use FLOAT32 sound" msgstr "Usa suono FLOAT32" @@ -519,6 +516,9 @@ msgstr "Dispositivo LPT3:" msgid "LPT4 Device:" msgstr "Dispositivo LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA LPT ECP interna" + msgid "Serial port 1" msgstr "Porta seriale 1" @@ -640,10 +640,10 @@ msgid "MO drives:" msgstr "Unità magneto-ottiche:" msgid "MO:" -msgstr "" +msgstr "Magneto-ottiche:" msgid "Removable disks:" -msgstr "" +msgstr "Dischi rimovibili:" msgid "Removable disk drives:" msgstr "Unità disco rimovibili:" @@ -760,7 +760,7 @@ msgid "Display" msgstr "Schermo" msgid "Input devices" -msgstr "Dispositivi di entrata" +msgstr "Dispositivi di ingresso" msgid "Sound" msgstr "Audio" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Porte (COM e LPT)" msgid "Ports" -msgstr "" +msgstr "Porte" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Porte seriali:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Porte parallele:" msgid "Storage controllers" msgstr "Controller di archiviazione" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Dischi rigidi" msgid "Disks:" -msgstr "" +msgstr "Dischi:" msgid "Floppy:" -msgstr "" +msgstr "Floppy:" msgid "Controllers:" -msgstr "" +msgstr "Controller:" msgid "Floppy & CD-ROM drives" msgstr "Unità CD-ROM e Floppy" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Altre periferiche" msgid "Other devices" -msgstr "" +msgstr "Altri dispositivi" msgid "Click to capture mouse" msgstr "Fare clic per catturare il mouse" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Dispositivo integrato" msgid "&File" -msgstr "" +msgstr "&File" msgid "&New machine..." -msgstr "" +msgstr "&Nuova macchina..." msgid "&Check for updates..." -msgstr "" +msgstr "&Controlla gli aggiornamenti..." msgid "Exit" msgstr "Esci" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Sospendi l'esecuzione" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Canc" msgid "Press Ctrl+Alt+Del" msgstr "Premere Ctrl+Alt+Canc" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Riavvia" msgid "Force shutdown" -msgstr "" +msgstr "Forza arresto" msgid "Start" -msgstr "" +msgstr "Avvia" msgid "Not running" -msgstr "" +msgstr "Inattivo" msgid "Running" -msgstr "" +msgstr "In esecuzione" msgid "Paused" -msgstr "" +msgstr "In pausa" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "In attesa" msgid "Powered Off" -msgstr "" +msgstr "Spento" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n in esecuzione" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n in pausa" + +msgid "%n waiting" +msgstr "%n in attesa" + +msgid "%1 total" +msgstr "%1 totale" + +msgid "VMs: %1" +msgstr "Macchine virtuali: %1" msgid "System Directory:" -msgstr "" +msgstr "Directory Sistema:" msgid "Choose directory" -msgstr "" +msgstr "Scegli la directory" msgid "Choose configuration file" -msgstr "" +msgstr "Scegli il file di configurazione" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "File di configurazione di 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Lettura del file di configurazione non riuscita" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Impossibile aprire il file di configurazione selezionato per la lettura: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Utilizza espressioni regolari nella casella di ricerca" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "Sono attualmente attive %1 macchina/e. Vuoi comunque uscire dal gestore delle macchine virtuali?" msgid "Add new system wizard" -msgstr "" +msgstr "Procedura guidata nuovo sistema" msgid "Introduction" -msgstr "" +msgstr "Introduzione" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Questo ti aiuterà ad aggiungere un nuovo sistema ad 86Box." msgid "New configuration" -msgstr "" +msgstr "Nuova configurazione" msgid "Complete" -msgstr "" +msgstr "Completamento" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "La procedura guidata avvierà ora la configurazione del nuovo sistema." msgid "Use existing configuration" -msgstr "" +msgstr "Utilizza configurazione esistente" msgid "Type some notes here" -msgstr "" +msgstr "Scrivi qui alcune note" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Incolla il contenuto del file di configurazione esistente nella casella sottostante." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Carica configurazione da file" msgid "System name" -msgstr "" +msgstr "Nome sistema" msgid "System name:" -msgstr "" +msgstr "Nome sistema:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Il nome del sistema non può contenere determinati caratteri" msgid "System name already exists" -msgstr "" +msgstr "Il nome del sistema esiste già" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Inserisci una directory per il sistema" msgid "Directory does not exist" -msgstr "" +msgstr "La directory non esiste" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Verrà creata una nuova cartella per il sistema nella directory selezionata sopra" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Posizione sistema:" msgid "System name and location" -msgstr "" +msgstr "Nome e posizione del sistema" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Inserisci il nome del sistema e scegli la posizione" msgid "Enter the name of the system" -msgstr "" +msgstr "Inserisci il nome del sistema" msgid "Please enter a system name" -msgstr "" +msgstr "Inserisci il nome del sistema" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Nome visualizzato (opzionale):" msgid "Display name:" -msgstr "" +msgstr "Nome visualizzato:" msgid "Set display name" -msgstr "" +msgstr "Imposta il nome da visualizzare" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Inserisci il nuovo nome da visualizzare (vuoto per reimpostarlo)" msgid "Change &display name..." -msgstr "" +msgstr "Modifica &nome visualizzato..." msgid "Context Menu" -msgstr "" +msgstr "Menu contestuale" msgid "&Open folder..." -msgstr "" +msgstr "&Apri cartella..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Apri vassoio &stampante..." msgid "Set &icon..." -msgstr "" +msgstr "Imposta &icona..." msgid "Select an icon" -msgstr "" +msgstr "Seleziona un'icona" msgid "C&lone..." -msgstr "" +msgstr "C&lona..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "La macchina virtuale \"%1\" (%2) sarà clonata in:" msgid "Directory %1 already exists" -msgstr "" +msgstr "La directory %1 esiste già" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Non è possibile utilizzare i seguenti caratteri nel nome: %1" msgid "Clone" -msgstr "" +msgstr "Clona" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Impossibile creare la directory per la macchina virtuale clonata" msgid "Failed to clone VM." -msgstr "" +msgstr "Impossibile clonare la macchina virtuale." msgid "Directory in use" -msgstr "" +msgstr "Directory in uso" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "La directory selezionata è già in uso. Selezionane una diversa." msgid "Create directory failed" -msgstr "" +msgstr "Creazione directory non riuscita" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Impossibile creare la directory per il nuovo sistema" msgid "Configuration write failed" -msgstr "" +msgstr "Scrittura del file di configurazione non riuscita" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Impossibile aprire il file di configurazione in %1 per la scrittura" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Errore durante l'aggiunta del sistema" msgid "Remove directory failed" -msgstr "" +msgstr "Rimozione directory non riuscita" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Non è stato possibile eliminare alcuni file nella directory della macchina. Sarà necessario eliminarli manualmente." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Versione" + +msgid "An update to 86Box is available: %1 %2" +msgstr "È disponibile un aggiornamento per 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Si è verificato un errore durante la ricerca degli aggiornamenti: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "È disponibile un aggiornamento per 86Box!" msgid "Warning" -msgstr "" +msgstr "Avviso" msgid "&Kill" -msgstr "" +msgstr "&Forza chiusura" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Forzare la chiusura di una macchina virtuale può causare la perdita di dati. Eseguire questa operazione solo se il processo di 86Box si blocca.\n\nDesideri davvero forzare la chiusura della macchina virtuale \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Elimina" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Vuoi davvero eliminare la macchina virtuale \"%1\" e tutti i suoi file? Questa operazione è irreversibile!" msgid "Show &config file" -msgstr "" +msgstr "Mostra file di &configurazione" msgid "No screenshot" -msgstr "" +msgstr "Nessuna istantanea dello schermo" msgid "Search" -msgstr "" +msgstr "Cerca" msgid "Searching for VMs..." -msgstr "" +msgstr "Ricerca delle macchine virtuali..." msgid "Found %1" -msgstr "" +msgstr "Trovato %1" msgid "System" -msgstr "" +msgstr "Sistema" msgid "Storage" -msgstr "" +msgstr "Archiviazione" msgid "Disk %1: " -msgstr "" +msgstr "Disco %1: " msgid "No disks" -msgstr "" +msgstr "Nessun disco" msgid "Audio" -msgstr "" +msgstr "Audio" msgid "Audio:" -msgstr "" +msgstr "Audio:" msgid "ACPI shutdown" msgstr "Arresto ACPI" @@ -1594,7 +1600,7 @@ msgid "Fast" msgstr "Veloce" msgid "&Auto-pause on focus loss" -msgstr "&Pausa automatica se in secondo piano" +msgstr "Pa&usa automatica se in secondo piano" msgid "WinBox is no longer supported" msgstr "WinBox non è più supportato" @@ -1603,7 +1609,7 @@ msgid "Development of the WinBox manager stopped in 2022 due to a lack of mainta msgstr "Lo sviluppo del gestore WinBox si è interrotto nel 2022 per mancanza di manutentori. Poiché i nostri sforzi sono rivolti a rendere 86Box ancora migliore, abbiamo deciso di non supportare più WinBox come gestore.\n\nNon saranno forniti ulteriori aggiornamenti tramite WinBox e si potrebbe riscontrare un comportamento non corretto se si continua a utilizzarlo con le versioni più recenti di 86Box. Tutte le segnalazioni di errori relative al comportamento di WinBox saranno chiuse in quanto non valide.\n\nPer un elenco di altri gestori utilizzabili, visitare 86box.net." msgid "Generate" -msgstr "Generare" +msgstr "Genera" msgid "Joystick configuration" msgstr "Configurazione del joystick" @@ -1626,9 +1632,6 @@ msgstr "Elenco dei dispositivi MCA:" msgid "&Tablet tool" msgstr "Strumento tablet" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Informazioni su &Qt" @@ -1636,13 +1639,13 @@ msgid "&MCA devices..." msgstr "Dispositivi MCA..." msgid "Show non-&primary monitors" -msgstr "Mostra i monitor non primari" +msgstr "Mostra i monitor non &primari" msgid "Open screenshots &folder..." -msgstr "Apri la cartella screenshots..." +msgstr "Apri la ca&rtella screenshots..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Applica adattamento schermo intero in modalità massimizzata" +msgstr "Applica adattamento sc&hermo intero in modalità massimizzata" msgid "&Cursor/Puck" msgstr "&Cursore/Puck" @@ -1672,13 +1675,13 @@ msgid "Null Driver" msgstr "Driver Null" msgid "NIC:" -msgstr "" +msgstr "Scheda di rete:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Scheda di rete %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Scheda di rete %1 (%2) %3" msgid "Render behavior" msgstr "Comportamento renderizzazione" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Scheda di rete #1" @@ -1789,7 +1792,7 @@ msgid "Serial port passthrough 4" msgstr "Porta seriale passante 4" msgid "Renderer &options..." -msgstr "Opzioni renderizzatore..." +msgstr "&Opzioni renderizzatore..." msgid "PC/XT Keyboard" msgstr "Tastiera PC/XT" @@ -1897,19 +1900,19 @@ msgid "BIOS address (ROM #4)" msgstr "Indirizzo BIOS (ROM #4)" msgid "Enable BIOS extension ROM Writes" -msgstr "Abilita le scritture della ROM di espansione del BIOS" +msgstr "Abilita scritture ROM di espansione del BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "Abilita le scritture della ROM di espansione del BIOS (ROM #1)" +msgstr "Abilita scritture ROM di espansione del BIOS (ROM #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "Abilita le scritture della ROM di espansione del BIOS (ROM #2)" +msgstr "Abilita scritture ROM di espansione del BIOS (ROM #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "Abilita le scritture della ROM di espansione del BIOS (ROM #3)" +msgstr "Abilita scritture ROM di espansione del BIOS (ROM #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "Abilita le scritture della ROM di espansione del BIOS (ROM #4)" +msgstr "Abilita scritture ROM di espansione del BIOS (ROM #4)" msgid "Linear framebuffer base" msgstr "Base del framebuffer lineare" @@ -2005,7 +2008,7 @@ msgid "SoundFont" msgstr "SoundFont" msgid "Output Gain" -msgstr "Guadagno di uscita" +msgstr "Guadagno uscita" msgid "Chorus" msgstr "Coro" @@ -2053,7 +2056,7 @@ msgid "Reversed stereo" msgstr "Stereo invertito" msgid "Nice ramp" -msgstr "Bella rampa" +msgstr "Rampa di ampl. migliorata" msgid "Hz" msgstr "Hz" @@ -2095,7 +2098,7 @@ msgid "TCP/IP listening port" msgstr "Porta di ascolto TCP/IP" msgid "Phonebook File" -msgstr "File rubrica" +msgstr "File di rubrica" msgid "Telnet emulation" msgstr "Emulazione Telnet" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Composito" +msgid "True color" +msgstr "Milioni di colori" + msgid "Old" msgstr "Vecchio" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Grafica 3Dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU)" @@ -2758,7 +2764,7 @@ msgid "Action" msgstr "Azione" msgid "Keybind" -msgstr "Associazione tasto" +msgstr "Tasto associato" msgid "Clear binding" msgstr "Rimuovi associazione" @@ -2770,7 +2776,7 @@ msgid "Bind Key" msgstr "Associa tasto" msgid "Enter key combo:" -msgstr "Inserimento combinazione tasti:" +msgstr "Inserisci combinazione tasti:" msgid "Bind conflict" msgstr "Associazione in conflitto" @@ -2823,92 +2829,128 @@ msgstr "Modalità Hub" msgid "Hostname:" msgstr "Nome host:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Cancella NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Questa operazione eliminerà tutti i file NVRAM (e correlati) della macchina virtuale situati nella sottodirectory \"nvr\". Sarà necessario riconfigurare nuovamente le impostazioni del BIOS e, eventualmente, di altri dispositivi all'interno della macchina virtuale.\n\nSei sicuro di voler cancellare tutto il contenuto della NVRAM della macchina virtuale \"%1\"?" msgid "Success" -msgstr "" +msgstr "Successo" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Contenuto della NVRAM della macchina virtuale \"%1\" cancellato con successo" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Si è verificato un errore durante il tentativo di cancellare il contenuto della NVRAM della macchina virtuale \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Gestore macchine virtuali di %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disco/i" msgid "Unknown Status" -msgstr "" +msgstr "Stato sconosciuto" msgid "No Machines Found!" -msgstr "" +msgstr "Nessuna macchina trovata!" msgid "Check for updates on startup" -msgstr "" +msgstr "Verifica la disponibilità degli aggiornamenti all'avvio" msgid "Unable to determine release information" -msgstr "" +msgstr "Impossibile determinare le informazioni sulla versione" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Si è verificato un errore durante la verifica degli aggiornamenti:\n\n%1\n\nRiprova più tardi." msgid "Update check complete" -msgstr "" +msgstr "Ricerca degli aggiornamenti completata" + +msgid "stable" +msgstr "stabile" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Stai utilizzando l'ultima versione %1 di 86Box: %2" msgid "version" -msgstr "" +msgstr "versione" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Stai attualmente utilizzando la versione %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "La versione %1 è ora disponibile." + +msgid "You are currently running build %1." +msgstr "Stai attualmente utilizzando la build %1." + +msgid "Build %1 is now available." +msgstr "La build %1 è ora disponibile." + +msgid "Would you like to visit the download page?" +msgstr "Vuoi visitare la pagina per scaricare la nuova versione?" msgid "Visit download page" -msgstr "" +msgstr "Visita la pagina" msgid "Update check" -msgstr "" +msgstr "Verifica disponibilità degli aggiornamenti" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Ricerca degli aggiornamenti..." msgid "86Box Update" -msgstr "" +msgstr "Aggiornamento di 86Box" msgid "Release notes:" -msgstr "" +msgstr "Note di rilascio:" -#~ msgid "HD Controller:" -#~ msgstr "Controller HD:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Unità ZIP:" +msgid "Virtual machine crash" +msgstr "Arresto anomalo della macchina virtuale" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Il processo della macchina virtuale \"%1\" è terminato inaspettatamente con il codice di uscita %2." -#~ msgid "ZIP images" -#~ msgstr "Immagini ZIP" +msgid "The system will not be added." +msgstr "Il sistema non verrà aggiunto." + +msgid "&Update mouse every CPU frame" +msgstr "&Aggiorna stato del mouse ad ogni blocco della CPU" + +msgid "Hue" +msgstr "Tinta" + +msgid "Saturation" +msgstr "Saturazione" + +msgid "Contrast" +msgstr "Contrasto" + +msgid "Brightness" +msgstr "Luminosità" + +msgid "Sharpness" +msgstr "Nitidezza" + +msgid "&CGA composite settings..." +msgstr "Impostazioni video composito &CGA..." + +msgid "CGA composite settings" +msgstr "Impostazioni video composito CGA" diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index 47731d6c9..149170ae0 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "一時停止(&P)" msgid "Pause" -msgstr "" +msgstr "一時停止" msgid "Re&sume" -msgstr "" +msgstr "再開する(&S)" msgid "E&xit" msgstr "終了(&X)" @@ -57,9 +57,6 @@ msgstr "レンダラー(&N)" msgid "&Qt (Software)" msgstr "Qt (ソフトウェア)(&Q)" -msgid "Qt (&OpenGL)" -msgstr "Qt (OpenGL)(&O)" - msgid "Open&GL (3.0 Core)" msgstr "OpenGL (3.0 Core)(&G)" @@ -69,8 +66,8 @@ msgstr "VNC(&V)" msgid "Specify &dimensions..." msgstr "ディメンションを指定...(&D)" -msgid "F&orce 4:3 display ratio" -msgstr "4:3の縦横比を強制表示(&O)" +msgid "Force &4:3 display ratio" +msgstr "4:3の縦横比を強制表示(&4)" msgid "&Window scale factor" msgstr "ウィンドウの表示倍率(&W)" @@ -138,8 +135,8 @@ msgstr "整数倍(&I)" msgid "4:&3 Integer scale" msgstr "4:3 整数倍(&3)" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGAの設定" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGAの設定" msgid "&Inverted VGA monitor" msgstr "色反転(&I)" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB(カラー)(&C)" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB(茶色なし)" msgid "&RGB Grayscale" msgstr "RGB(グレースケール)(&R)" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "汎用RGBIカラーモニター" msgid "&Amber monitor" msgstr "モニター(黄色)(&A)" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "設定(&S)..." msgid "Settings..." -msgstr "" +msgstr "設定..." msgid "&Update status bar icons" msgstr "ステータスバーのアイコンを更新(&U)" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "設定" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "CPUタイプ:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "動的再コンパイル" msgid "CPU frame size" -msgstr "" +msgstr "CPUフレームサイズ" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "より大きなフレーム(滑らかさが劣る)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "より小さなフレーム(より滑らか)" msgid "Video:" msgstr "ビデオカード:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGAグラフィック" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55ディスプレイアダプターグラフィックス" msgid "Keyboard:" -msgstr "" +msgstr "キーボード:" msgid "Keyboard" -msgstr "" +msgstr "キーボード" msgid "Mouse:" msgstr "マウス:" msgid "Mouse" -msgstr "" +msgstr "マウス" msgid "Joystick:" msgstr "ジョイスティック:" msgid "Joystick" -msgstr "" +msgstr "ジョイスティック" msgid "Joystick 1..." msgstr "ジョイスティック1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI入力デバイス:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI出力" msgid "Standalone MPU-401" msgstr "独立型MPU-401" @@ -519,6 +516,9 @@ msgstr "LPT3デバイス:" msgid "LPT4 Device:" msgstr "LPT4デバイス:" +msgid "Internal LPT ECP DMA:" +msgstr "内部LPTのECPのDMA:" + msgid "Serial port 1" msgstr "シリアルポート1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "FDDコントローラー:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ROMコントローラー:" msgid "Tertiary IDE Controller" msgstr "第三IDEコントローラー" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "第四IDEコントローラー" msgid "Hard disk" -msgstr "" +msgstr "ハードディスク" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "ハード ディスク:" msgid "Firmware Version" -msgstr "" +msgstr "ファームウェアバージョン" msgid "&New..." msgstr "新規(&N)..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "光磁気ドライブ:" msgid "MO:" -msgstr "" +msgstr "光磁気:" msgid "Removable disks:" -msgstr "" +msgstr "取り外し可能なディスク:" msgid "Removable disk drives:" -msgstr "" +msgstr "取り外し可能なディスクドライブ:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISAメモリ拡張カード" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROMカード" msgid "Card 1:" msgstr "カード1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "カード4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "汎用ISA ROMボード" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "汎用デュアルISA ROMボード" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "汎用クアッドISA ROMボード" msgid "ISABugger device" msgstr "ISABuggerデバイス" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "速度" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "取り外し可能なディスク %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "取り外し可能なディスク(&R) %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "取り外し可能なディスクイメージ" msgid "Image %1" -msgstr "" +msgstr "イメージ %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Boxで使用可能なROMイメージが見つかりません。\n\nROMセットをダウンロードして、roms ディレクトリに解凍してください。" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "ポート (COM/LPT)" msgid "Ports" -msgstr "" +msgstr "ポート" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "シリアルポート:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "パラレルポート:" msgid "Storage controllers" msgstr "ストレージコントローラ" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "ハードディスク" msgid "Disks:" -msgstr "" +msgstr "ディスク:" msgid "Floppy:" -msgstr "" +msgstr "フロッピー:" msgid "Controllers:" -msgstr "" +msgstr "コントローラ:" msgid "Floppy & CD-ROM drives" msgstr "フロッピー/CD-ROMドライブ" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "他の周辺デバイス" msgid "Other devices" -msgstr "" +msgstr "他のデバイス" msgid "Click to capture mouse" msgstr "左クリックでマウスをキャプチャします" @@ -874,43 +874,43 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinderパッド" msgid "Thrustmaster Flight Control System" -msgstr "Thrustmaster飛行制御システム" +msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2ボタン式ゲームパッド" msgid "2-button flight yoke" -msgstr "" +msgstr "2ボタン式操縦桿" msgid "4-button gamepad" -msgstr "" +msgstr "4ボタン式ゲームパッド" msgid "4-button flight yoke" -msgstr "" +msgstr "4ボタン式操縦桿" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2ボタン式フライトヨーク(スロットル付き)" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4ボタン式フライトヨーク(スロットル付き)" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95 ステアリングホイール(3軸、4ボタン)" msgid "None" msgstr "なし" msgid "%1 MB (CHS: %2, %3, %4)" -msgstr "%u MB (CHS値: %i、%i、%i)" +msgstr "%1 MB (CHS値: %2、%3、%4)" msgid "Floppy %1 (%2): %3" msgstr "フロッピー %1 (%2): %3" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "内蔵デバイス" msgid "&File" -msgstr "" +msgstr "ファイル(&F)" msgid "&New machine..." -msgstr "" +msgstr "新しいマシン(&N)" msgid "&Check for updates..." -msgstr "" +msgstr "アップデートを確認中(&C)..." msgid "Exit" msgstr "終了" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "実行を一時停止" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Ctrl+Alt+DELを押す" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "ハードリセット" msgid "Force shutdown" -msgstr "" +msgstr "強制終了" msgid "Start" -msgstr "" +msgstr "スタート" msgid "Not running" -msgstr "" +msgstr "停止した" msgid "Running" -msgstr "" +msgstr "実行中" msgid "Paused" -msgstr "" +msgstr "一時停止中" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "待機中" msgid "Powered Off" -msgstr "" +msgstr "電源オフ" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n 実行中" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n 停止した" + +msgid "%n waiting" +msgstr "%n 待機中" + +msgid "%1 total" +msgstr "%1 は総数です" + +msgid "VMs: %1" +msgstr "仮想マシン: %1" msgid "System Directory:" -msgstr "" +msgstr "システムディレクトリ:" msgid "Choose directory" -msgstr "" +msgstr "ディレクトリを選択する" msgid "Choose configuration file" -msgstr "" +msgstr "設定ファイルを選択する" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box 設定ファイル (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "設定の読み込みに失敗しました" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "選択した設定ファイルを読み込むことができませんでした: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "検索ボックスで正規表現を使用する" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "現在、%1台の仮想マシンがアクティブです。それでもVMマネージャーを終了しますか?" msgid "Add new system wizard" -msgstr "" +msgstr "新しいシステムを追加するためのウィザード" msgid "Introduction" -msgstr "" +msgstr "序文" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "これにより、86Boxに新しいシステムを追加することができます。" msgid "New configuration" -msgstr "" +msgstr "新しい構成" msgid "Complete" -msgstr "" +msgstr "完了" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "ウィザードは、新しいシステムの構成を開始します。" msgid "Use existing configuration" -msgstr "" +msgstr "既存の設定を使用する" msgid "Type some notes here" -msgstr "" +msgstr "ここにメモを入力してください" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "既存の設定ファイルの内容を、以下のボックスに貼り付けてください。" msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "ファイルから設定を読み込む" msgid "System name" -msgstr "" +msgstr "システム名" msgid "System name:" -msgstr "" +msgstr "システム名:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "システム名には特定の文字を含めることはできません" msgid "System name already exists" -msgstr "" +msgstr "システム名が既に存在しています" msgid "Please enter a directory for the system" -msgstr "" +msgstr "システム用のディレクトリを入力してください" msgid "Directory does not exist" -msgstr "" +msgstr "ディレクトリが存在しません" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "選択したディレクトリ上に、システム用の新しいディレクトリが作成されます" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "システム場所:" msgid "System name and location" -msgstr "" +msgstr "システム名と場所" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "システムの名前を入力し、場所を選択してください" msgid "Enter the name of the system" -msgstr "" +msgstr "システムの名前を入力してください" msgid "Please enter a system name" -msgstr "" +msgstr "システムの名前を入力してください" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "表示名(任意):" msgid "Display name:" -msgstr "" +msgstr "表示名:" msgid "Set display name" -msgstr "" +msgstr "表示名を設定する" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "新しい表示名を入力してください(空白にするとリセットされます)" msgid "Change &display name..." -msgstr "" +msgstr "表示名を変更(&D)..." msgid "Context Menu" -msgstr "" +msgstr "コンテキストメニュー" msgid "&Open folder..." -msgstr "" +msgstr "フォルダーを開く(&O)..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "プリンタートレイを開く(&R)..." msgid "Set &icon..." -msgstr "" +msgstr "アイコンを設定(&I)..." msgid "Select an icon" -msgstr "" +msgstr "アイコンを選択してください" msgid "C&lone..." -msgstr "" +msgstr "クローン(&L)..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "仮想マシン\"%1\" (%2)は、以下の場所にクローンされます:" msgid "Directory %1 already exists" -msgstr "" +msgstr "ディレクトリ %1 は既に存在します" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "名前には以下の文字を使用できません: %1" msgid "Clone" -msgstr "" +msgstr "クローン" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "クローンされたVM用のディレクトリを作成できませんでした" msgid "Failed to clone VM." -msgstr "" +msgstr "仮想マシンのクローン作成に失敗しました。" msgid "Directory in use" -msgstr "" +msgstr "使用中のディレクトリ" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "選択したディレクトリは既に使用中です。別のディレクトリを選択してください。" msgid "Create directory failed" -msgstr "" +msgstr "ディレクトリの作成に失敗しました" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "新しいシステム用のディレクトリを作成できませんでした" msgid "Configuration write failed" -msgstr "" +msgstr "設定の書き込みに失敗しました" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "%1 の設定ファイルを書き込み用に開くことができません" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "システム追加エラー" msgid "Remove directory failed" -msgstr "" +msgstr "ディレクトリの削除に失敗しました" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "マシンのディレクトリ内のいくつかのファイルが削除できませんでした。手動で削除してください。" msgid "Build" -msgstr "" +msgstr "ビルド" msgid "Version" -msgstr "" +msgstr "バージョン" + +msgid "An update to 86Box is available: %1 %2" +msgstr "86Boxのアップデートが利用可能です: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "アップデートの確認中にエラーが発生しました: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "86Boxのアップデートが利用可能になりました!" msgid "Warning" -msgstr "" +msgstr "警告" msgid "&Kill" -msgstr "" +msgstr "強制的に終了する(&K)" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "仮想マシンを強制終了すると、データが失われる可能性があります。86Boxプロセスが応答しなくなった場合のみ、この操作を行ってください。\n\n本当に仮想マシン\"%1\"を終了しますか?" msgid "&Delete" -msgstr "" +msgstr "削除(&D)" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "本当に仮想マシン\"%1\"とそのすべてのファイルを削除しますか? この操作は元に戻せません!" msgid "Show &config file" -msgstr "" +msgstr "設定ファイルを表示する(&C)" msgid "No screenshot" -msgstr "" +msgstr "スクリーンショットなし" msgid "Search" -msgstr "" +msgstr "検索" msgid "Searching for VMs..." -msgstr "" +msgstr "仮想マシンを検索中..." msgid "Found %1" -msgstr "" +msgstr "%1が見つかりました" msgid "System" -msgstr "" +msgstr "システム" msgid "Storage" -msgstr "" +msgstr "ストレージ" msgid "Disk %1: " -msgstr "" +msgstr "ディスク %1:" msgid "No disks" -msgstr "" +msgstr "ディスクなし" msgid "Audio" -msgstr "" +msgstr "音声" msgid "Audio:" -msgstr "" +msgstr "音声:" msgid "ACPI shutdown" msgstr "ACPIシャットダウン" @@ -1626,9 +1632,6 @@ msgstr "MCAデバイスのリスト:" msgid "&Tablet tool" msgstr "タブレットツール(&T)" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "&Qtについて" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "ヌル・ドライバー" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "ネットワークカード 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "レンダラー設定...(&O)" msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT キーボード" msgid "AT Keyboard" -msgstr "" +msgstr "AT キーボード" msgid "AX Keyboard" -msgstr "" +msgstr "AX キーボード" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2 キーボード" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55 キーボード" msgid "Keys" -msgstr "" +msgstr "キー" msgid "Logitech/Microsoft Bus Mouse" msgstr "Logitech/Microsoft バスマウス" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Mouse Systems シリアルマウス" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Mouse Systems バスマウス" msgid "Microsoft Serial Mouse" msgstr "Microsoft シリアルマウス" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Microsoft BallPoint シリアルマウス" msgid "Logitech Serial Mouse" msgstr "Logitech シリアルマウス" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "PS/2マウス" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPortマウス" msgid "3M MicroTouch (Serial)" msgstr "3Mマイクロタッチ(シリアル)" msgid "Default Baud rate" -msgstr "" +msgstr "デフォルトのボーレート" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] 標準ヘイズ準拠モデム" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "MIDI入力デバイス" msgid "BIOS file" -msgstr "" +msgstr "BIOSファイル" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOSファイル (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOSファイル (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOSファイル (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOSファイル (ROM 4)" msgid "BIOS address" msgstr "BIOSアドレス" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOSアドレス (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOSアドレス (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOSアドレス (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOSアドレス (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "BIOS拡張ROM書き込みを有効にする" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "BIOS拡張ROM書き込みを有効にする (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "BIOS拡張ROM書き込みを有効にする (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "BIOS拡張ROM書き込みを有効にする (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "BIOS拡張ROM書き込みを有効にする (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "線形フレームバッファのベースアドレス" msgid "Address" msgstr "アドレス" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "割り込み要求" msgid "Serial port IRQ" -msgstr "" +msgstr "シリアルポートのIRQ" msgid "Parallel port IRQ" -msgstr "" +msgstr "パラレルポートのIRQ" msgid "BIOS Revision" msgstr "BIOSリビジョン" msgid "BIOS Version" -msgstr "" +msgstr "BIOSバージョン" msgid "BIOS Language" -msgstr "" +msgstr "BIOS言語" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161拡張ユニット" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM カセット BASIC" msgid "Translate 26 -> 17" msgstr "26→17を翻訳" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "BIOSサイズ" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOSサイズ (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOSサイズ (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOSサイズ (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOSサイズ (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "C0000-C7FFFをUMBとしてマップ" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "補間法" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "サンプルの動的ロード" msgid "Reverb Output Gain" msgstr "リバーブ出力のゲイン" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "ゲームポートを有効にする" msgid "SID Model" -msgstr "" +msgstr "SIDモデル" msgid "SID Filter Strength" -msgstr "" +msgstr "SIDフィルターの強度" msgid "Surround module" msgstr "サラウンド・モジュール" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "SBアドレス" msgid "Adlib Address" -msgstr "" +msgstr "Adlibアドレス" msgid "Use EEPROM setting" -msgstr "" +msgstr "EEPROMの設定を使用する" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "ブレンド" msgid "Font" -msgstr "" +msgstr "フォント" msgid "Bilinear filtering" msgstr "バイリニア・フィルタリング" msgid "Video chroma-keying" -msgstr "" +msgstr "ビデオのクロマキー処理" msgid "Dithering" msgstr "ディザリング" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "EMSモード" msgid "EMS Address" -msgstr "" +msgstr "EMSアドレス" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1アドレス" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2アドレス" msgid "EMS Memory Size" -msgstr "" +msgstr "EMSメモリ容量" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1メモリ容量" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2メモリ容量" msgid "Enable EMS" -msgstr "" +msgstr "EMSを有効にする" msgid "Enable EMS 1" -msgstr "" +msgstr "EMS 1を有効にする" msgid "Enable EMS 2" -msgstr "" +msgstr "EMS 2を有効にする" msgid "Address for > 2 MB" msgstr "2MB以上のアドレス" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "五つ+ホイール" msgid "Five + 2 Wheels" -msgstr "" +msgstr "五つ+2輪のホイール" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 シリアル / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "コンポジット" +msgid "True color" +msgstr "真の色" + msgid "Old" msgstr "古い" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "線形補間" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "8×8のセカンダリ文字セット" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Quadcolor IIの拡張ボード" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "代替モノクロームコントラスト" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "ねずみ色" msgid "Grayscale" -msgstr "" +msgstr "グレイスケール" msgid "Color" msgstr "カラー" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs latest" msgid "Apply overscan deltas" -msgstr "" +msgstr "オーバースキャンデルタを適用する" msgid "Mono Interlaced" -msgstr "" +msgstr "モノラル・インターレース" msgid "Mono Non-Interlaced" msgstr "モノラル・ノンインターレース" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3dfx Voodooグラフィック" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst(2 TMU単位)" @@ -2623,10 +2629,10 @@ msgid "Baud Rate of Passthrough" msgstr "パススルーのボーレート" msgid "Named Pipe (Server)" -msgstr "名前付きパイプ(サーバー)" +msgstr "名前付きパイプ(サーバー)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "名前付きパイプ(クライアント)" msgid "Host Serial Passthrough" msgstr "ホストシリアルポートのパススルー" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "パフォーマンスへの影響が大きい" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] RAMディスク(最高速度)" +msgstr "[汎用] RAMディスク(最高速度)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[汎用] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[汎用] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[汎用] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[汎用] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[汎用] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[汎用] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[汎用] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" msgstr "IBM 8514/A クローン(ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "業者" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "汎用PC/XTメモリ拡張カード" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "汎用ESC/Pドットマトリクスプリンタのエミュレーションには、roms/printer/fontsディレクトリ内のTrueTypeフォントが必要です。" msgid "Inhibit multimedia keys" -msgstr "" +msgstr "マルチメディアキーを無効にする" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "設定を保存する前に確認を求めます" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "ハードリセットを行う前に確認を求めます" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "終了する前に確認を求めます" msgid "Options" -msgstr "" +msgstr "オプション" msgid "Model" -msgstr "" +msgstr "モデル" msgid "Model:" -msgstr "" +msgstr "モデル:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Vulkanレンダラーの初期化に失敗しました。" msgid "GLSL Error" -msgstr "" +msgstr "GLSLエラー" msgid "Could not load shader: %1" -msgstr "" +msgstr "シェーダーを読み込めませんでした: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "OpenGLバージョン 3.0 以上が必要です。現在のGLSLバージョンは %1.%2 です。" msgid "Could not load texture: %1" -msgstr "" +msgstr "テクスチャを読み込めませんでした: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "シェーダーをコンパイルできませんでした:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "プログラムがリンクされていません:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "シェーダーマネージャー" msgid "Shader Configuration" -msgstr "" +msgstr "シェーダー設定" msgid "Add" -msgstr "" +msgstr "追加" msgid "Move up" -msgstr "" +msgstr "昇進する" msgid "Move down" -msgstr "" +msgstr "下に移動する" msgid "Could not load file %1" -msgstr "" +msgstr "ファイル %1 をロードできませんでした" msgid "Key Bindings:" -msgstr "" +msgstr "キーバインド:" msgid "Action" -msgstr "" +msgstr "アクション" msgid "Keybind" -msgstr "" +msgstr "キーバインド" msgid "Clear binding" -msgstr "" +msgstr "バインドを解除する" msgid "Bind" -msgstr "" +msgstr "バインド" msgid "Bind Key" -msgstr "" +msgstr "キーのバインド" msgid "Enter key combo:" -msgstr "" +msgstr "キーの組み合わせを入力してください:" msgid "Bind conflict" -msgstr "" +msgstr "バインド競合" msgid "This key combo is already in use." -msgstr "" +msgstr "このキーの組み合わせは既に使用中です。" msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Delを送信" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Ctrl+Alt+Escを送信" msgid "Toggle fullscreen" -msgstr "" +msgstr "フルスクリーン表示を切り替える" msgid "Screenshot" -msgstr "" +msgstr "スクリーンショット" msgid "Release mouse pointer" -msgstr "" +msgstr "マウスポインターを解放する" msgid "Toggle pause" -msgstr "" +msgstr "一時停止を切り替える" msgid "Toggle mute" -msgstr "" +msgstr "ミュートを切り替える" msgid "Text files" -msgstr "" +msgstr "テキストファイル" msgid "ROM files" -msgstr "" +msgstr "ROMファイル" msgid "SoundFont files" -msgstr "" +msgstr "SoundFontファイル" msgid "Local Switch" -msgstr "" +msgstr "ローカルスイッチ" msgid "Remote Switch" -msgstr "" +msgstr "リモートスイッチ" msgid "Switch:" -msgstr "" +msgstr "スイッチ:" msgid "Hub Mode" -msgstr "" +msgstr "ハブモード" msgid "Hostname:" -msgstr "" +msgstr "ホスト名:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "NVRAMを消去する(&W)" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "これによって、仮想マシン内の\"nvr\"サブディレクトリに格納されているすべてのNVRAM(および関連)ファイルが削除されます。必要に応じて、BIOSの設定(および仮想マシン内の他のデバイス設定)を再構成する必要があります。\n\n仮想マシン\"%1\"のすべてのNVRAM内容を削除してもよろしいですか?" msgid "Success" -msgstr "" +msgstr "成功" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "仮想マシン\"%1\"のNVRAMの内容を正常に消去しました" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "仮想マシン\"%1\"のNVRAMの内容を消去しようとした際にエラーが発生しました" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 VMマネージャー" msgid "%n disk(s)" -msgstr "" +msgstr "%n ディスク" msgid "Unknown Status" -msgstr "" +msgstr "不明な状態" msgid "No Machines Found!" -msgstr "" +msgstr "マシンが検出されません!" msgid "Check for updates on startup" -msgstr "" +msgstr "起動時にアップデートを確認する" msgid "Unable to determine release information" -msgstr "" +msgstr "リリース情報を確認できません" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "アップデートの確認中にエラーが発生しました:\n\n%1\n\n後ほどもう一度お試しください。" msgid "Update check complete" -msgstr "" +msgstr "アップデートチェック完了" + +msgid "stable" +msgstr "安定" + +msgid "beta" +msgstr "ベータ" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "あなたは最新の%1版の86Boxを実行しています: %2" msgid "version" -msgstr "" +msgstr "バージョン" msgid "build" -msgstr "" +msgstr "ビルド" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "現在、バージョン%1を実行中です。" -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "バージョン %1 が現在利用可能です。" + +msgid "You are currently running build %1." +msgstr "現在、ビルド%1を実行中です。" + +msgid "Build %1 is now available." +msgstr "ビルド %1 が現在利用可能です。" + +msgid "Would you like to visit the download page?" +msgstr "ダウンロードページをご覧になりたいですか?" msgid "Visit download page" -msgstr "" +msgstr "ダウンロードページをご覧ください" msgid "Update check" -msgstr "" +msgstr "アップデートチェック" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "アップデートを確認中..." msgid "86Box Update" -msgstr "" +msgstr "86Box アップデート" msgid "Release notes:" -msgstr "" +msgstr "リリースノート:" -#~ msgid "HD Controller:" -#~ msgstr "HDDコントローラー:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIPドライブ:" +msgid "Virtual machine crash" +msgstr "仮想マシンの予期せぬ終了" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "仮想マシン\"%1\"のプロセスが、終了コード %2 で予期せず終了しました。" -#~ msgid "ZIP images" -#~ msgstr "ZIPイメージ" +msgid "The system will not be added." +msgstr "システムは追加されません。" + +msgid "&Update mouse every CPU frame" +msgstr "マウスをCPUフレームごとに更新(&U)" + +msgid "Hue" +msgstr "色相" + +msgid "Saturation" +msgstr "飽和" + +msgid "Contrast" +msgstr "対比" + +msgid "Brightness" +msgstr "明るさ" + +msgid "Sharpness" +msgstr "シャープネス" + +msgid "&CGA composite settings..." +msgstr "CGA複合モードの設定...(&C)" + +msgid "CGA composite settings" +msgstr "CGA複合モードの設定" diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po index 29b19f683..066b8a3f8 100644 --- a/src/qt/languages/ko-KR.po +++ b/src/qt/languages/ko-KR.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "일시정지(&P)" msgid "Pause" -msgstr "" +msgstr "일시정지" msgid "Re&sume" -msgstr "" +msgstr "상태에서 재개" msgid "E&xit" msgstr "끝내기(&X)" @@ -57,9 +57,6 @@ msgstr "렌더러(&N)" msgid "&Qt (Software)" msgstr "Qt (소프트웨어)(&Q)" -msgid "Qt (&OpenGL)" -msgstr "Qt (OpenGL)(&O)" - msgid "Open&GL (3.0 Core)" msgstr "OpenGL (3.0 Core)(&G)" @@ -69,8 +66,8 @@ msgstr "VNC(&V)" msgid "Specify &dimensions..." msgstr "창 크기 지정하기...(&D)" -msgid "F&orce 4:3 display ratio" -msgstr "화면 비율을 4:3으로 맞추기(&O)" +msgid "Force &4:3 display ratio" +msgstr "화면 비율을 4:3으로 맞추기(&4)" msgid "&Window scale factor" msgstr "창 표시 배율(&W)" @@ -138,8 +135,8 @@ msgstr "정수배 확대(&I)" msgid "4:&3 Integer scale" msgstr "4:3 정수배 확대(&3)" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGA 설정" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGA 설정" msgid "&Inverted VGA monitor" msgstr "색상 반전된 VGA 모니터(&I)" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB 천연색(&C)" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (갈색 없음)" msgid "&RGB Grayscale" msgstr "RGB 회색조(&R)" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "일반 RGBI 컬러 모니터" msgid "&Amber monitor" msgstr "주황색 모니터(&A)" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "설정(&S)..." msgid "Settings..." -msgstr "" +msgstr "설정..." msgid "&Update status bar icons" msgstr "상태 바 아이콘 갱신하기(&U)" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "설정" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "CPU 종류:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "동적 재컴파일" msgid "CPU frame size" -msgstr "" +msgstr "CPU 프레임 크기" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "더 큰 프레임 (덜 부드럽음)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "더 작은 프레임 (더 부드러운)" msgid "Video:" msgstr "비디오 카드:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA 그래픽" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 디스플레이 어댑터 그래픽스" msgid "Keyboard:" -msgstr "" +msgstr "키보드:" msgid "Keyboard" -msgstr "" +msgstr "키보드" msgid "Mouse:" msgstr "마우스:" msgid "Mouse" -msgstr "" +msgstr "마우스" msgid "Joystick:" msgstr "조이스틱:" msgid "Joystick" -msgstr "" +msgstr "조이스틱" msgid "Joystick 1..." msgstr "조이스틱 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI 입력 장치:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI 출력:" msgid "Standalone MPU-401" msgstr "MPU-401 단독 사용" @@ -519,6 +516,9 @@ msgstr "LPT3 장치:" msgid "LPT4 Device:" msgstr "LPT4 장치:" +msgid "Internal LPT ECP DMA:" +msgstr "내부 LPT의 ECP의 DMA:" + msgid "Serial port 1" msgstr "직렬 포트 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "FD 컨트롤러:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ROM 컨트롤러:" msgid "Tertiary IDE Controller" msgstr "제3의 IDE 컨트롤러" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "제4의 IDE 컨트롤러" msgid "Hard disk" -msgstr "" +msgstr "하드 디스크" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "하드 디스크:" msgid "Firmware Version" -msgstr "" +msgstr "펌웨어 버전" msgid "&New..." msgstr "새로 만들기(&N)..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "광자기 드라이브:" msgid "MO:" -msgstr "" +msgstr "광자기:" msgid "Removable disks:" -msgstr "" +msgstr "제거 가능한 디스크:" msgid "Removable disk drives:" -msgstr "" +msgstr "제거 가능한 디스크 드라이브:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA 메모리 확장 카드" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM 카드" msgid "Card 1:" msgstr "카드 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "카드 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "일반 ISA ROM 보드" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "일반 듀얼 ISA ROM 보드" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "일반 쿼드 ISA ROM 보드" msgid "ISABugger device" msgstr "ISABugger 장치" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "속도" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "제거 가능한 디스크 %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "제거 가능한 디스크(&R) %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "제거 가능한 디스크 이미지" msgid "Image %1" -msgstr "" +msgstr "이미지 %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box에서 사용 가능한 ROM 이미지를 찾을 수 없습니다.\n\nROM 세트를다운로드 후 \"roms\" 디렉토리에 압축을 풀어 주세요." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "포트 (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "포트" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "시리얼 포트:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "병렬 포트:" msgid "Storage controllers" msgstr "장치 컨트롤러" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "하드 디스크" msgid "Disks:" -msgstr "" +msgstr "디스크:" msgid "Floppy:" -msgstr "" +msgstr "플로피:" msgid "Controllers:" -msgstr "" +msgstr "컨트롤러:" msgid "Floppy & CD-ROM drives" msgstr "플로피 / CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "기타 주변기기" msgid "Other devices" -msgstr "" +msgstr "기타 저장장치" msgid "Click to capture mouse" msgstr "이 창을 클릭하면 마우스를 사용합니다" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2버튼 게임패드" msgid "2-button flight yoke" -msgstr "" +msgstr "2버튼 비행 조종간" msgid "4-button gamepad" -msgstr "" +msgstr "4버튼 게임패드" msgid "4-button flight yoke" -msgstr "" +msgstr "4버튼 비행 조종간" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2버튼 비행 조종간과 스로틀" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4버튼 비행 조종간과 스로틀" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95 조타륜 (3축, 4버튼)" msgid "None" msgstr "없음" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "내부 장치" msgid "&File" -msgstr "" +msgstr "파일(&F)" msgid "&New machine..." -msgstr "" +msgstr "새로운 기계(&N)..." msgid "&Check for updates..." -msgstr "" +msgstr "업데이트 확인 중(&C)..." msgid "Exit" msgstr "끝내기" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "실행 일시 중지" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "재시작" msgid "Force shutdown" -msgstr "" +msgstr "강제 종료" msgid "Start" -msgstr "" +msgstr "시작" msgid "Not running" -msgstr "" +msgstr "실행 중이 아닙니다" msgid "Running" -msgstr "" +msgstr "실행 중입니다" msgid "Paused" -msgstr "" +msgstr "일시 중지되었습니다" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "대기 중입니다" msgid "Powered Off" -msgstr "" +msgstr "전원이 꺼져 있습니다" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n 실행 중입니다" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n 일시 중지되었습니다" + +msgid "%n waiting" +msgstr "%n 대기 중입니다" + +msgid "%1 total" +msgstr "%1 총계" + +msgid "VMs: %1" +msgstr "가상 머신: %1" msgid "System Directory:" -msgstr "" +msgstr "시스템 디렉토리:" msgid "Choose directory" -msgstr "" +msgstr "디렉토리 선택" msgid "Choose configuration file" -msgstr "" +msgstr "구성 파일 선택" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box 구성 파일 (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "구성 읽기 실패" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "선택한 구성 파일을 읽기 위해 열 수 없습니다: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "검색 상자에 정규 표현식 사용" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "현재 %1대의 머신이 활성화되어 있습니다. 가상 머신 관리자를 종료하시겠습니까?" msgid "Add new system wizard" -msgstr "" +msgstr "새로운 시스템을 추가하는 마법사" msgid "Introduction" -msgstr "" +msgstr "서론" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "이것은 86Box에 새로운 시스템을 추가하는 데 도움이 될 것입니다." msgid "New configuration" -msgstr "" +msgstr "새로운 구성" msgid "Complete" -msgstr "" +msgstr "완료" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "마법사가 이제 새로운 시스템의 설정을 시작합니다." msgid "Use existing configuration" -msgstr "" +msgstr "기존 구성 사용" msgid "Type some notes here" -msgstr "" +msgstr "여기 메모를 입력하세요" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "기존 구성 파일의 내용을 아래 상자에 붙여넣으세요." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "파일에서 구성 로드" msgid "System name" -msgstr "" +msgstr "시스템 이름" msgid "System name:" -msgstr "" +msgstr "시스템 이름:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "시스템 이름에는 특정 문자를 포함할 수 없습니다" msgid "System name already exists" -msgstr "" +msgstr "시스템 이름이 이미 존재합니다" msgid "Please enter a directory for the system" -msgstr "" +msgstr "시스템을 위한 디렉토리를 입력해 주세요" msgid "Directory does not exist" -msgstr "" +msgstr "디렉토리가 존재하지 않습니다" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "위에서 선택한 디렉토리에 시스템용 새로운 디렉토리가 생성됩니다" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "시스템 위치:" msgid "System name and location" -msgstr "" +msgstr "시스템 이름 및 위치" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "시스템 이름을 입력하고 위치를 선택하세요" msgid "Enter the name of the system" -msgstr "" +msgstr "시스템 이름을 입력하세요" msgid "Please enter a system name" -msgstr "" +msgstr "시스템 이름을 입력해 주세요" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "표시 이름 (선택 사항):" msgid "Display name:" -msgstr "" +msgstr "표시 이름:" msgid "Set display name" -msgstr "" +msgstr "표시 이름 설정" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "새 표시 이름을 입력하세요 (비워두면 초기화됩니다)" msgid "Change &display name..." -msgstr "" +msgstr "표시 이름 변경(&D)..." msgid "Context Menu" -msgstr "" +msgstr "컨텍스트 메뉴" msgid "&Open folder..." -msgstr "" +msgstr "폴더 열기(&O)..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "프린터 트레이를 열기(&R)..." msgid "Set &icon..." -msgstr "" +msgstr "아이콘 설정(&I)..." msgid "Select an icon" -msgstr "" +msgstr "아이콘을 선택하세요" msgid "C&lone..." -msgstr "" +msgstr "클론(&L)..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "가상 머신 \"%1\" (%2)는 다음으로 복제됩니다:" msgid "Directory %1 already exists" -msgstr "" +msgstr "%1 디렉토리가 이미 존재합니다" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "이름에 다음 문자를 사용할 수 없습니다: %1" msgid "Clone" -msgstr "" +msgstr "클론" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "클론된 가상 머신을 위한 디렉토리를 생성하지 못했습니다" msgid "Failed to clone VM." -msgstr "" +msgstr "가상 머신 복제에 실패했습니다." msgid "Directory in use" -msgstr "" +msgstr "사용 중인 디렉토리" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "선택한 디렉토리가 이미 사용 중입니다. 다른 디렉토리를 선택해 주시기 바랍니다." msgid "Create directory failed" -msgstr "" +msgstr "디렉토리 생성 실패" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "새 시스템용 디렉토리를 생성할 수 없습니다" msgid "Configuration write failed" -msgstr "" +msgstr "구성 쓰기 실패" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "%1에서 구성 파일을 쓰기 위해 열 수 없습니다" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "시스템 추가 오류" msgid "Remove directory failed" -msgstr "" +msgstr "디렉토리 제거에 실패했습니다" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "기계 디렉토리 내의 일부 파일이 삭제되지 않았습니다. 해당 파일을 수동으로 삭제해 주시기 바랍니다." msgid "Build" -msgstr "" +msgstr "빌드" msgid "Version" -msgstr "" +msgstr "버전" + +msgid "An update to 86Box is available: %1 %2" +msgstr "86Box의 업데이트가 가능합니다: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "업데이트 확인 중 오류가 발생했습니다: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "86Box의 업데이트가 제공됩니다!" msgid "Warning" -msgstr "" +msgstr "경고" msgid "&Kill" -msgstr "" +msgstr "강제 종료(&K)" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "가상 머신을 강제 종료하면 데이터 손실이 발생할 수 있습니다. 86Box 프로세스가 멈춘 경우에만 이 작업을 수행하십시오.\n\n가상 머신 \"%1\"을 정말로 종료하시겠습니까?" msgid "&Delete" -msgstr "" +msgstr "삭제(&D)" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "정말 가상 머신 \"%1\"과 모든 파일을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다!" msgid "Show &config file" -msgstr "" +msgstr "구성 파일 표시(&C)" msgid "No screenshot" -msgstr "" +msgstr "스크린샷 없음" msgid "Search" -msgstr "" +msgstr "검색" msgid "Searching for VMs..." -msgstr "" +msgstr "가상 머신을 검색 중입니다..." msgid "Found %1" -msgstr "" +msgstr "%1 발견됨" msgid "System" -msgstr "" +msgstr "시스템" msgid "Storage" -msgstr "" +msgstr "장치" msgid "Disk %1: " -msgstr "" +msgstr "디스크 %1: " msgid "No disks" -msgstr "" +msgstr "디스크 없음" msgid "Audio" -msgstr "" +msgstr "오디오" msgid "Audio:" -msgstr "" +msgstr "오디오:" msgid "ACPI shutdown" msgstr "ACPI 종료" @@ -1483,7 +1489,7 @@ msgid "CD-ROM %1 (%2): %3" msgstr "CD-ROM %1 (%2): %3" msgid "&CD-ROM %1 (%2): %3" -msgstr "" +msgstr "CD-ROM(&C) %1 (%2): %3" msgid "160 KB" msgstr "160 KB" @@ -1626,9 +1632,6 @@ msgstr "MCA 장치 목록:" msgid "&Tablet tool" msgstr "태블릿 도구(&T)" -msgid "Qt (OpenGL &ES)" -msgstr "Qt(OpenGL &ES)" - msgid "About &Qt" msgstr "&Qt 소개" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Null 드라이버" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "네트워크 카드 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "렌더러 옵션...(&O)" msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT 키보드" msgid "AT Keyboard" -msgstr "" +msgstr "AT 키보드" msgid "AX Keyboard" -msgstr "" +msgstr "AX 키보드" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2 키보드" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55 키보드" msgid "Keys" -msgstr "" +msgstr "키" msgid "Logitech/Microsoft Bus Mouse" msgstr "로지텍/마이크로소프트 버스 마우스" @@ -1819,28 +1822,28 @@ msgid "Mouse Systems Serial Mouse" msgstr "마우스 시스템 시리얼 마우스" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "마우스 시스템 버스 마우스" msgid "Microsoft Serial Mouse" -msgstr "마이크로소프트 직렬 마우스" +msgstr "마이크로소프트 시리얼 마우스" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "마이크로소프트 볼펜 시리얼 마우스" msgid "Logitech Serial Mouse" -msgstr "로지텍 직렬 마우스" +msgstr "로지텍 시리얼 마우스" msgid "PS/2 Mouse" msgstr "PS/2 마우스" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort 마우스" msgid "3M MicroTouch (Serial)" msgstr "3M 마이크로터치(직렬)" msgid "Default Baud rate" -msgstr "" +msgstr "기본 보드 속도" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] 표준 헤이즈 호환 모뎀" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "미디 입력 장치" msgid "BIOS file" -msgstr "" +msgstr "BIOS 파일" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS 파일 (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS 파일 (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS 파일 (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS 파일 (ROM 4)" msgid "BIOS address" msgstr "BIOS 주소" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS 주소 (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS 주소 (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS 주소 (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS 주소 (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "BIOS 확장 ROM 쓰기 활성화" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "BIOS 확장 ROM 쓰기 활성화 (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "BIOS 확장 ROM 쓰기 활성화 (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "BIOS 확장 ROM 쓰기 활성화 (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "BIOS 확장 ROM 쓰기 활성화 (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "선형 프레임버퍼의 기본 주소" msgid "Address" msgstr "주소" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "시리얼 포트 IRQ" msgid "Parallel port IRQ" -msgstr "" +msgstr "병렬 포트 IRQ" msgid "BIOS Revision" msgstr "BIOS 개정" msgid "BIOS Version" -msgstr "" +msgstr "BIOS 버전" msgid "BIOS Language" -msgstr "" +msgstr "BIOS 언어" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161 확장 유닛" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM 카세트 베이직" msgid "Translate 26 -> 17" msgstr "번역 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "BIOS 크기" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOS 크기 (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOS 크기 (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOS 크기 (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOS 크기 (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "C0000-C7FFF를 UMB로 매핑하기" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "보간 방법" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "샘플의 동적 로딩" msgid "Reverb Output Gain" msgstr "리버브 출력의 게인" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "게임 포트 사용" msgid "SID Model" -msgstr "" +msgstr "SID 모델" msgid "SID Filter Strength" -msgstr "" +msgstr "SID 필터 강도" msgid "Surround module" msgstr "서라운드 모듈" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "SB 주소" msgid "Adlib Address" -msgstr "" +msgstr "Adlib 주소" msgid "Use EEPROM setting" -msgstr "" +msgstr "EEPROM 설정 사용" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "블렌드" msgid "Font" -msgstr "" +msgstr "폰트" msgid "Bilinear filtering" msgstr "이중선형 필터링" msgid "Video chroma-keying" -msgstr "" +msgstr "비디오 크로마 키잉" msgid "Dithering" msgstr "디더링" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "EMS 모드" msgid "EMS Address" -msgstr "" +msgstr "EMS 주소" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1 주소" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2 주소" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS 메모리 용량" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1 메모리 용량" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2 메모리 용량" msgid "Enable EMS" -msgstr "" +msgstr "EMS 활성화" msgid "Enable EMS 1" -msgstr "" +msgstr "EMS 1 활성화" msgid "Enable EMS 2" -msgstr "" +msgstr "EMS 2 활성화" msgid "Address for > 2 MB" msgstr "2MB 이상의 주소" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "5개 + 휠" msgid "Five + 2 Wheels" -msgstr "" +msgstr "5개 + 2휠" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 직렬/SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "합성" +msgid "True color" +msgstr "진정한 색상" + msgid "Old" msgstr "Old" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "선형 보간" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "8x8 보조 문자 집합" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "쿼드컬러 II 딸보드" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "대체 단색 대비" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "회색" msgid "Grayscale" -msgstr "" +msgstr "그레이스케일" msgid "Color" msgstr "색상" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs 최신 정보" msgid "Apply overscan deltas" -msgstr "" +msgstr "오버스캔 델타 적용" msgid "Mono Interlaced" -msgstr "" +msgstr "모노 인터레이스" msgid "Mono Non-Interlaced" msgstr "모노 비인터레이스" @@ -2548,13 +2554,13 @@ msgid "Color Interlaced" msgstr "컬러 인터레이스" msgid "Color Non-Interlaced" -msgstr "비인터레이스 컬러" +msgstr "컬러 비인터레이스" msgid "3Dfx Voodoo Graphics" msgstr "3Dfx 부두 그래픽" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "옵시디언 SB50 + 자수정(TMU 2개)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "네임드 파이프(서버)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "네임드 파이프(클라이언트)" msgid "Host Serial Passthrough" msgstr "호스트 직렬 포트 패스스루" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "성능에 미치는 영향" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] RAM 디스크(최대 속도)" +msgstr "[일반] RAM 디스크(최대 속도)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[일반] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[일반] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[일반] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[일반] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[일반] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[일반] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[일반] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" msgstr "IBM 8514/A 클론(ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "제조사" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "일반 PC/XT 메모리 확장 카드" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "일반 ESC/P 도트 매트릭스 프린터의 에뮬레이션을 사용하려면 \"roms/printer/fonts\" 디렉터리에 있는 트루타입 글꼴이 필요합니다." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "멀티미디어 키 사용 금지" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "설정을 저장하기 전에 확인을 요청합니다" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "하드 리셋을 실행하기 전에 확인을 요청합니다" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "종료하기 전에 확인을 요청합니다" msgid "Options" -msgstr "" +msgstr "옵션" msgid "Model" -msgstr "" +msgstr "모델" msgid "Model:" -msgstr "" +msgstr "모델:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Vulkan 렌더러 초기화 실패." msgid "GLSL Error" -msgstr "" +msgstr "GLSL 오류" msgid "Could not load shader: %1" -msgstr "" +msgstr "셰이더를 로드할 수 없습니다: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "OpenGL 버전 3.0 이상이 필요합니다. 현재 GLSL 버전은 %1.%2입니다" msgid "Could not load texture: %1" -msgstr "" +msgstr "텍스처를 로드할 수 없습니다: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "셰이더를 컴파일할 수 없습니다:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "프로그램이 연결되지 않았습니다:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "셰이더 관리자" msgid "Shader Configuration" -msgstr "" +msgstr "셰이더 구성" msgid "Add" -msgstr "" +msgstr "추가" msgid "Move up" -msgstr "" +msgstr "위쪽으로 이동" msgid "Move down" -msgstr "" +msgstr "아래로 이동" msgid "Could not load file %1" -msgstr "" +msgstr "파일 %1을 로드할 수 없습니다" msgid "Key Bindings:" -msgstr "" +msgstr "키 바인딩:" msgid "Action" -msgstr "" +msgstr "행동" msgid "Keybind" -msgstr "" +msgstr "키 바인딩" msgid "Clear binding" -msgstr "" +msgstr "바인딩 해제" msgid "Bind" -msgstr "" +msgstr "묶습니다" msgid "Bind Key" -msgstr "" +msgstr "키를 묶습니다" msgid "Enter key combo:" -msgstr "" +msgstr "키 조합을 입력하세요:" msgid "Bind conflict" -msgstr "" +msgstr "바인딩 충돌" msgid "This key combo is already in use." -msgstr "" +msgstr "이 키 조합은 이미 사용 중입니다." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del 보내기" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Ctrl+Alt+Esc 보내기" msgid "Toggle fullscreen" -msgstr "" +msgstr "전체 화면 모드 전환" msgid "Screenshot" -msgstr "" +msgstr "스크린샷" msgid "Release mouse pointer" -msgstr "" +msgstr "마우스 포인터를 해제합니다" msgid "Toggle pause" -msgstr "" +msgstr "일시정지 토글" msgid "Toggle mute" -msgstr "" +msgstr "음소거 켜기/끄기" msgid "Text files" -msgstr "" +msgstr "텍스트 파일" msgid "ROM files" -msgstr "" +msgstr "ROM 파일" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont 파일" msgid "Local Switch" -msgstr "" +msgstr "로컬 스위치" msgid "Remote Switch" -msgstr "" +msgstr "원격 스위치" msgid "Switch:" -msgstr "" +msgstr "스위치:" msgid "Hub Mode" -msgstr "" +msgstr "허브 모드" msgid "Hostname:" -msgstr "" +msgstr "호스트 이름:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "NVRAM 지우기(&W)" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "이 작업은 가상 머신에 위치한 \"nvr\" 하위 디렉토리 내의 모든 NVRAM(및 관련) 파일을 삭제합니다. 해당 가상 머신의 BIOS 설정(및 가상 머신 내의 다른 장치 설정)을 다시 구성해야 할 수 있습니다.\n\n가상 머신 \"%1\"의 모든 NVRAM 내용을 삭제하시겠습니까?" msgid "Success" -msgstr "" +msgstr "성공" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "가상 머신 \"%1\"의 NVRAM 내용을 성공적으로 지웠습니다" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "가상 머신 \"%1\"의 NVRAM 내용을 지우려고 시도하는 과정에서 오류가 발생했습니다" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 가상 머신 관리자" msgid "%n disk(s)" -msgstr "" +msgstr "%n 디스크" msgid "Unknown Status" -msgstr "" +msgstr "알 수 없는 상태" msgid "No Machines Found!" -msgstr "" +msgstr "기계가 없습니다!" msgid "Check for updates on startup" -msgstr "" +msgstr "시작 시 업데이트 확인" msgid "Unable to determine release information" -msgstr "" +msgstr "출시 정보를 확인할 수 없습니다" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "업데이트 확인 중 오류가 발생했습니다:\n\n%1\n\n나중에 다시 시도해 주시기 바랍니다." msgid "Update check complete" -msgstr "" +msgstr "업데이트 확인 완료" + +msgid "stable" +msgstr "안정" + +msgid "beta" +msgstr "베타" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "현재 86Box의 최신 %1 버전을 실행 중입니다: %2" msgid "version" -msgstr "" +msgstr "버전" msgid "build" -msgstr "" +msgstr "빌드" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "현재 %1 버전을 실행 중입니다." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "버전 %1이 이제 사용 가능합니다." + +msgid "You are currently running build %1." +msgstr "현재 %1 빌드를 실행 중입니다." + +msgid "Build %1 is now available." +msgstr "빌드 %1이 이제 사용 가능합니다." + +msgid "Would you like to visit the download page?" +msgstr "다운로드 페이지로 이동하시겠습니까?" msgid "Visit download page" -msgstr "" +msgstr "다운로드 페이지 방문" msgid "Update check" -msgstr "" +msgstr "업데이트 확인" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "업데이트 확인 중..." msgid "86Box Update" -msgstr "" +msgstr "86Box 업데이트" msgid "Release notes:" -msgstr "" +msgstr "릴리스 노트:" -#~ msgid "HD Controller:" -#~ msgstr "HD 컨트롤러:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP 드라이브:" +msgid "Virtual machine crash" +msgstr "가상 머신의 예상치 못한 종료" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "가상 머신 \"%1\"의 프로세스가 예상치 않게 종료되었으며 종료 코드는 %2입니다." -#~ msgid "ZIP images" -#~ msgstr "ZIP 이미지" +msgid "The system will not be added." +msgstr "시스템은 추가되지 않을 것입니다." + +msgid "&Update mouse every CPU frame" +msgstr "마우스를 각 CPU 프레임마다 업데이트합니다(&U)" + +msgid "Hue" +msgstr "색조" + +msgid "Saturation" +msgstr "포화도" + +msgid "Contrast" +msgstr "대조" + +msgid "Brightness" +msgstr "밝기" + +msgid "Sharpness" +msgstr "선명도" + +msgid "&CGA composite settings..." +msgstr "CGA 복합 모드의 설정...(&C)" + +msgid "CGA composite settings" +msgstr "CGA 복합 모드의 설정" diff --git a/src/qt/languages/hu-HU.po b/src/qt/languages/nb-NO.po similarity index 50% rename from src/qt/languages/hu-HU.po rename to src/qt/languages/nb-NO.po index 84889a336..cde1d942e 100644 --- a/src/qt/languages/hu-HU.po +++ b/src/qt/languages/nb-NO.po @@ -3,20 +3,20 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Language: hu_HU\n" +"X-Language: nb_NO\n" "X-Source-Language: en_US\n" msgid "&Action" -msgstr "&Művelet" +msgstr "&Handling" msgid "&Keyboard requires capture" -msgstr "A &billentyűzet elfogást igényel" +msgstr "&Tastatur krever opptak" msgid "&Right CTRL is left ALT" -msgstr "A &jobb oldali CTRL a bal ALT" +msgstr "&Høyre CTRL er venstre ALT" msgid "&Hard Reset..." -msgstr "Hardveres &újraindítás..." +msgstr "&Hard tilbakestilling..." msgid "&Ctrl+Alt+Del" msgstr "&Ctrl+Alt+Del" @@ -25,40 +25,37 @@ msgid "Ctrl+Alt+&Esc" msgstr "Ctrl+Alt+&Esc" msgid "&Pause" -msgstr "&Szüneteltetés" +msgstr "&Pause" msgid "Pause" -msgstr "" +msgstr "&Pause" msgid "Re&sume" -msgstr "" +msgstr "Fo&rtsett" msgid "E&xit" -msgstr "&Kilépés" +msgstr "A&vslutt" msgid "&View" -msgstr "&Nézet" +msgstr "&Vis" msgid "&Hide status bar" -msgstr "Állapotsor &elrejtése" +msgstr "&Skjul statuslinje" msgid "Hide &toolbar" -msgstr "Hide &toolbar" +msgstr "Skjul &verktøylinje" msgid "&Resizeable window" -msgstr "&Átméretezhető ablak" +msgstr "&Justerbart vindu" msgid "R&emember size && position" -msgstr "Méret és pozíció &megjegyzése" +msgstr "H&usk størrelse &og plassering" msgid "Re&nderer" -msgstr "&Megjelenítő" +msgstr "Re&nderer" msgid "&Qt (Software)" -msgstr "&Qt (Szoftveres)" - -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" +msgstr "&Qt (Programvare)" msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -67,13 +64,13 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify &dimensions..." -msgstr "Méretek kézi megadása..." +msgstr "Angi &dimensjoner..." -msgid "F&orce 4:3 display ratio" -msgstr "&Rögzített 4:3 képarány" +msgid "Force &4:3 display ratio" +msgstr "Tving &4:3-bildeforhold" msgid "&Window scale factor" -msgstr "&Ablak méretezési tényező" +msgstr "&Vinduets skaleringsfaktor" msgid "&0.5x" msgstr "&0,5x" @@ -106,70 +103,70 @@ msgid "&8x" msgstr "&8x" msgid "Fi<er method" -msgstr "Szűrési mód" +msgstr "Fi<reringsmetode" msgid "&Nearest" -msgstr "&Szomszédos" +msgstr "&Nærmeste" msgid "&Linear" -msgstr "&Lineáris" +msgstr "&Lineær" msgid "Hi&DPI scaling" -msgstr "Hi&DPI méretezés" +msgstr "Hi&DPI-skalert" msgid "&Fullscreen" -msgstr "&Teljes képernyő" +msgstr "&Fullskjerm" msgid "Fullscreen &stretch mode" -msgstr "Teljes képernyős &méretezés" +msgstr "Fullskjerm&strekkmodus" msgid "&Full screen stretch" -msgstr "&Nyújtás a teljes képernyőre" +msgstr "&Fullskjermstrekk" msgid "&4:3" msgstr "&4:3" msgid "&Square pixels (Keep ratio)" -msgstr "&Négyzetes képpontok (aránytartás)" +msgstr "&Kvadratiske piksler (Behold forhold)" msgid "&Integer scale" -msgstr "&Egész tényezős nagyítás" +msgstr "Heltallsskala" msgid "4:&3 Integer scale" -msgstr "4:&3 Egész tényezős nagyítás" +msgstr "4:&3 Heltallsskala" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGA beállítások" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGA-innstillinger" msgid "&Inverted VGA monitor" -msgstr "&Invertált VGA kijelző" +msgstr "&Invertert VGA-skjerm" msgid "VGA screen &type" -msgstr "VGA képernyő &típusa" +msgstr "VGA-skjerm&type" msgid "RGB &Color" -msgstr "RGB &színes" +msgstr "RGB-&farger" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (uten brun)" msgid "&RGB Grayscale" -msgstr "&RGB szürkeárnyalatos" +msgstr "&RGB-gråskala" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Generisk RGBI-fargeskjerm" msgid "&Amber monitor" -msgstr "&Gyömbér kijelző" +msgstr "&Amber-skjerm" msgid "&Green monitor" -msgstr "&Zöld kijelző" +msgstr "&Grønn-skjerm" msgid "&White monitor" -msgstr "&Fehér kijelző" +msgstr "&Hvit-skjerm" msgid "Grayscale &conversion type" -msgstr "Szürkéskála &konzerziós eljárás" +msgstr "Gråskala-&konverteringsmetode" msgid "BT&601 (NTSC/PAL)" msgstr "BT&601 (NTSC/PAL)" @@ -178,106 +175,106 @@ msgid "BT&709 (HDTV)" msgstr "BT&709 (HDTV)" msgid "&Average" -msgstr "&Átlag szerint" +msgstr "&Gjennomsnitt" msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" -msgstr "CGA/PCjr/Tandy/E&GA/(S)VGA túlpásztázás" +msgstr "CGA/PCjr/Tandy/E&GA/(S)VGA-overscan" msgid "Change contrast for &monochrome display" -msgstr "Kontraszt illesztése &monokróm kijelzőhöz" +msgstr "Endre kontrast for &monokrom skjerm" msgid "&Media" -msgstr "&Média" +msgstr "&Medie" msgid "&Tools" -msgstr "&Eszközök" +msgstr "&Verktøy" msgid "&Settings..." -msgstr "&Konfigurálás..." +msgstr "&Innstillinger..." msgid "Settings..." -msgstr "" +msgstr "Innstillinger..." msgid "&Update status bar icons" -msgstr "Állapotsori ikonok &frissítése" +msgstr "&Oppdater statuslinjeikoner" msgid "Take s&creenshot" -msgstr "&Képernyőkép készítése" +msgstr "Ta s&kjermbilde" msgid "S&ound" -msgstr "&Hang" +msgstr "L&yd" msgid "&Preferences..." -msgstr "&Beállítások..." +msgstr "&Valg..." msgid "Enable &Discord integration" -msgstr "&Discord integráció engedélyezése" +msgstr "Aktiver &Discord-integrasjon" msgid "Sound &gain..." -msgstr "&Hangerőszabályzó..." +msgstr "Lyd&forsterkning..." msgid "Begin trace" -msgstr "Nyomkövetés megkezdése" +msgstr "Start sporing" msgid "End trace" -msgstr "Nyomkövetés befejezése" +msgstr "Stopp sporing" msgid "&Help" -msgstr "&Súgó" +msgstr "&Hjelp" msgid "&Documentation..." -msgstr "&Dokumentáció..." +msgstr "&Dokumentasjon..." msgid "&About 86Box..." -msgstr "A 86Box &névjegye..." +msgstr "&Om 86Box..." msgid "&New image..." -msgstr "&Új képfájl létrehozása..." +msgstr "&Ny diskfil..." msgid "&Existing image..." -msgstr "Meglévő képfájl &megnyitása..." +msgstr "&Eksisterende diskfil..." msgid "Existing image (&Write-protected)..." -msgstr "Meglévő képfájl megnyitása (&írásvédett)..." +msgstr "Eksisterende diskfil (&skrivbeskyttet)..." msgid "&Record" -msgstr "&Felvétel" +msgstr "&Spill inn" msgid "&Play" -msgstr "&Lejátszás" +msgstr "&Spill av" msgid "&Rewind to the beginning" -msgstr "&Visszatekerés az elejére" +msgstr "&Spol tilbake til starten" msgid "&Fast forward to the end" -msgstr "&Előretekerés a végére" +msgstr "&Spol frem til slutten" msgid "E&ject" -msgstr "&Kiadás" +msgstr "M&at ut" msgid "&Image..." -msgstr "Kép&fájl..." +msgstr "&Diskfil..." msgid "E&xport to 86F..." -msgstr "E&xportálás 86F formátumba..." +msgstr "E&ksporter til 86F..." msgid "&Mute" -msgstr "&Némítás" +msgstr "&Demp" msgid "E&mpty" -msgstr "&Kiadás" +msgstr "T&øm" msgid "Reload previous image" -msgstr "Előző képfájl újratöltése" +msgstr "Last inn forrige diskfil" msgid "&Folder..." -msgstr "&Mappa..." +msgstr "&Mappe..." msgid "Target &framerate" -msgstr "Cél &képkockasebesség" +msgstr "Mål-&bildefrekvens" msgid "&Sync with video" -msgstr "&Szinkronizálás a videóval" +msgstr "&Synkroniser med video" msgid "&25 fps" msgstr "&25 fps" @@ -298,529 +295,532 @@ msgid "&VSync" msgstr "&VSync" msgid "&Select shader..." -msgstr "Shader &kiválasztása..." +msgstr "&Velg shader..." msgid "&Remove shader" -msgstr "Shader &eltávolítása" +msgstr "&Fjern shader" msgid "Preferences" -msgstr "Beállítások" +msgstr "Valg" msgid "Sound Gain" -msgstr "Hangerőszabályzó" +msgstr "Lydforsterkning" msgid "New Image" -msgstr "Új képfájl létrehozása" +msgstr "Ny diskfil" msgid "Settings" -msgstr "Konfigurálás" +msgstr "Innstillinger" msgid "Specify Main Window Dimensions" -msgstr "Főablak méreteinek megadása" +msgstr "Angi hovedvinduets dimensjoner" msgid "OK" msgstr "OK" msgid "Cancel" -msgstr "Mégse" +msgstr "Avbryt" msgid "&Default" -msgstr "&Alapértelmezett" +msgstr "&Standard" msgid "Language:" -msgstr "Nyelv:" +msgstr "Språk" msgid "Gain" -msgstr "Hangerő" +msgstr "Forsterkning" msgid "File name:" -msgstr "Fájlnév:" +msgstr "Filnavn:" msgid "Disk size:" -msgstr "Méret:" +msgstr "Diskstørrelse:" msgid "RPM mode:" -msgstr "RPM-mód:" +msgstr "RPM-modus:" msgid "Progress:" -msgstr "Folyamat:" +msgstr "Fremdrift:" msgid "Width:" -msgstr "Szélesség:" +msgstr "Bredde:" msgid "Height:" -msgstr "Magasság:" +msgstr "Høyde:" msgid "Lock to this size" -msgstr "Rögzítés a megadott méretre" +msgstr "Lås til denne størrelsen" msgid "Machine type:" -msgstr "Géptípus:" +msgstr "Maskintype:" msgid "Machine:" -msgstr "Számítógép:" +msgstr "Maskin:" msgid "Configure" -msgstr "Beállítások..." +msgstr "Konfigurer" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" -msgstr "Processzor:" +msgstr "CPU-type:" msgid "Speed:" -msgstr "Seb.:" +msgstr "Hastighet:" msgid "Frequency:" -msgstr "Frekvencia:" +msgstr "Frekvens:" msgid "FPU:" -msgstr "FPU-egység:" +msgstr "FPU:" msgid "Wait states:" -msgstr "Várak. ciklusok:" +msgstr "Ventetilstander:" msgid "MB" msgstr "MB" msgid "Memory:" -msgstr "Memória:" +msgstr "Minne:" msgid "Time synchronization" -msgstr "Idő szinkronizáció" +msgstr "Tids-synkronisering" msgid "Disabled" -msgstr "Letiltva" +msgstr "Deaktivert" msgid "Enabled (local time)" -msgstr "Engedélyezve (helyi idő)" +msgstr "Aktivert (lokal tid)" msgid "Enabled (UTC)" -msgstr "Engedélyezve (UTC)" +msgstr "Aktivert (UTC)" msgid "Dynamic Recompiler" -msgstr "Dinamikus újrafordítás" +msgstr "Dynamisk recompilator" msgid "CPU frame size" -msgstr "" +msgstr "CPU-rammestørrelse" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Større rammer (mindre jevn)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Mindre rammer (jevnere)" msgid "Video:" -msgstr "Videokártya:" +msgstr "Video:" msgid "Video #2:" -msgstr "Videokártya 2:" +msgstr "Video #2:" msgid "Voodoo 1 or 2 Graphics" -msgstr "Voodoo 1 vagy 2-gyorsítókártya" +msgstr "Voodoo 1- eller 2-grafikk" msgid "IBM 8514/A Graphics" -msgstr "IBM 8514/A-gyorsítókártya" +msgstr "IBM 8514/A-grafikk" msgid "XGA Graphics" -msgstr "XGA-gyorsítókártya" +msgstr "XGA-grafikk" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 skjermadapter-grafikk" msgid "Keyboard:" -msgstr "" +msgstr "Tastatur:" msgid "Keyboard" -msgstr "" +msgstr "Tastatur" msgid "Mouse:" -msgstr "Egér:" +msgstr "Mus:" msgid "Mouse" -msgstr "" +msgstr "Mus" msgid "Joystick:" -msgstr "Játékvezérlő:" +msgstr "Styrespak:" msgid "Joystick" -msgstr "" +msgstr "Styrespak" msgid "Joystick 1..." -msgstr "Játékvez. 1..." +msgstr "Styrespak 1..." msgid "Joystick 2..." -msgstr "Játékvez. 2..." +msgstr "Styrespak 2..." msgid "Joystick 3..." -msgstr "Játékvez. 3..." +msgstr "Styrespak 3..." msgid "Joystick 4..." -msgstr "Játékvez. 4..." +msgstr "Styrespak 4..." msgid "Sound card #1:" -msgstr "Hangkártya 1:" +msgstr "Lydkort #1:" msgid "Sound card #2:" -msgstr "Hangkártya 2:" +msgstr "Lydkort #2:" msgid "Sound card #3:" -msgstr "Hangkártya 3:" +msgstr "Lydkort #3:" msgid "Sound card #4:" -msgstr "Hangkártya 4:" +msgstr "Lydkort #4:" msgid "MIDI Out Device:" -msgstr "MIDI-kimenet:" +msgstr "MIDI-ut-enhet:" msgid "MIDI In Device:" -msgstr "MIDI-bemenet:" +msgstr "MIDI-in-enhet:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI-ut:" msgid "Standalone MPU-401" -msgstr "Különálló MPU-401" +msgstr "Selvstendig MPU-401" msgid "Use FLOAT32 sound" -msgstr "FLOAT32 használata" +msgstr "Bruk FLOAT32-lyd" msgid "FM synth driver" -msgstr "FM szintetizátor meghajtó" +msgstr "FM-synth-driver" msgid "Nuked (more accurate)" -msgstr "Nuked (pontosabb)" +msgstr "Nuked (mer nøyaktig)" msgid "YMFM (faster)" -msgstr "YMFM (gyorsabb)" +msgstr "YMFM (raskere)" msgid "COM1 Device:" -msgstr "COM1 eszköz:" +msgstr "COM1-enhet:" msgid "COM2 Device:" -msgstr "COM2 eszköz:" +msgstr "COM2-enhet:" msgid "COM3 Device:" -msgstr "COM3 eszköz:" +msgstr "COM3-enhet:" msgid "COM4 Device:" -msgstr "COM4 eszköz:" +msgstr "COM4-enhet:" msgid "LPT1 Device:" -msgstr "LPT1 eszköz:" +msgstr "LPT1-enhet:" msgid "LPT2 Device:" -msgstr "LPT2 eszköz:" +msgstr "LPT2-enhet:" msgid "LPT3 Device:" -msgstr "LPT3 eszköz:" +msgstr "LPT3-enhet:" msgid "LPT4 Device:" -msgstr "LPT4 eszköz:" +msgstr "LPT4-enhet:" + +msgid "Internal LPT ECP DMA:" +msgstr "Intern LPT ECP DMA:" msgid "Serial port 1" -msgstr "Soros port 1" +msgstr "Seriell port 1" msgid "Serial port 2" -msgstr "Soros port 2" +msgstr "Seriell port 2" msgid "Serial port 3" -msgstr "Soros port 3" +msgstr "Seriell port 3" msgid "Serial port 4" -msgstr "Soros port 4" +msgstr "Seriell port 4" msgid "Parallel port 1" -msgstr "Párhuzamos port 1" +msgstr "Parallellport 1" msgid "Parallel port 2" -msgstr "Párhuzamos port 2" +msgstr "Parallellport 2" msgid "Parallel port 3" -msgstr "Párhuzamos port 3" +msgstr "Parallellport 3" msgid "Parallel port 4" -msgstr "Párhuzamos port 4" +msgstr "Parallellport 4" msgid "FD Controller:" -msgstr "Floppy-vezérlő:" +msgstr "FD-kontroller:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ROM-kontroller:" msgid "Tertiary IDE Controller" -msgstr "Harmadlagos IDE-vezérlő" +msgstr "Tertiær IDE-kontroller" msgid "Quaternary IDE Controller" -msgstr "Negyedleges IDE-vezérlő" +msgstr "Kvartær IDE-kontroller" msgid "Hard disk" -msgstr "" +msgstr "Harddisk" msgid "SCSI" msgstr "SCSI" msgid "Controller 1:" -msgstr "Gazdaadapt. 1:" +msgstr "Kontroller 1:" msgid "Controller 2:" -msgstr "Gazdaadapt. 2:" +msgstr "Kontroller 2:" msgid "Controller 3:" -msgstr "Gazdaadapt. 3:" +msgstr "Kontroller 3:" msgid "Controller 4:" -msgstr "Gazdaadapt. 4:" +msgstr "Kontroller 4:" msgid "Cassette" -msgstr "Magnókazetta" +msgstr "Kassett" msgid "Hard disks:" -msgstr "Merevlemezek:" +msgstr "Harddisker:" msgid "Firmware Version" -msgstr "" +msgstr "Firmware-versjon" msgid "&New..." -msgstr "&Új..." +msgstr "&Ny..." msgid "&Existing..." -msgstr "&Megnyitás..." +msgstr "&Eksisterende..." msgid "&Remove" -msgstr "&Eltávolítás" +msgstr "&Fjern" msgid "Bus:" -msgstr "Busz:" +msgstr "Buss:" msgid "Channel:" -msgstr "Csatorna:" +msgstr "Kanal:" msgid "ID:" msgstr "ID:" msgid "&Specify..." -msgstr "&Kiválasztás..." +msgstr "&Angi..." msgid "Sectors:" -msgstr "Szektor:" +msgstr "Sektorer:" msgid "Heads:" -msgstr "Fej:" +msgstr "Hoder:" msgid "Cylinders:" -msgstr "Cilinder:" +msgstr "Sylindre:" msgid "Size (MB):" -msgstr "Méret (MB):" +msgstr "Størrelse (MB):" msgid "Type:" -msgstr "Típus:" +msgstr "Type:" msgid "Image Format:" -msgstr "Formátum:" +msgstr "Image-format:" msgid "Block Size:" -msgstr "Blokkméret:" +msgstr "Blokkstørrelse:" msgid "Floppy drives:" -msgstr "Floppy-meghajtók:" +msgstr "Diskettstasjoner:" msgid "Turbo timings" -msgstr "Turbó időzítés" +msgstr "Turbo-timing" msgid "Check BPB" -msgstr "BPB ellenőrzés" +msgstr "Sjekk BPB" msgid "CD-ROM drives:" -msgstr "CD-ROM meghajtók:" +msgstr "CD-ROM-stasjoner:" msgid "MO drives:" -msgstr "MO-meghajtók:" +msgstr "MO-stasjoner:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Flyttbare disker:" msgid "Removable disk drives:" -msgstr "" +msgstr "Flyttbare stasjoner:" msgid "ZIP 250" msgstr "ZIP 250" msgid "ISA RTC:" -msgstr "ISA RTC (óra):" +msgstr "ISA RTC:" msgid "ISA Memory Expansion" -msgstr "ISA memóriabővítők" +msgstr "ISA-minneutvidelse" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM-kort" msgid "Card 1:" -msgstr "Kártya 1:" +msgstr "Kort 1:" msgid "Card 2:" -msgstr "Kártya 2:" +msgstr "Kort 2:" msgid "Card 3:" -msgstr "Kártya 3:" +msgstr "Kort 3:" msgid "Card 4:" -msgstr "Kártya 4:" +msgstr "Kort 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Generisk ISA ROM-kort" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Generisk dobbel ISA ROM-kort" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Generisk kvart ISA ROM-kort" msgid "ISABugger device" -msgstr "ISABugger eszköz" +msgstr "ISABugger-enhet" msgid "POST card" -msgstr "POST kártya" +msgstr "POST-kort" msgid "86Box" msgstr "86Box" msgid "Error" -msgstr "Hiba" +msgstr "Feil" msgid "Fatal error" -msgstr "Végzetes hiba" +msgstr "Kritisk feil" msgid " - PAUSED" -msgstr " - SZÜNETELT" +msgstr " - PAUSERT" msgid "Speed" -msgstr "Sebesség" +msgstr "Hastighet" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Flyttbar disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Flyttbar disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Flyttbare diskfiler" msgid "Image %1" -msgstr "" +msgstr "Diskfil %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." -msgstr "A 86Box nem talált használható ROM-képeket\n\nKérem töltse le a ROM készletet és bontsa ki a \"roms\" könyvtárba." +msgstr "86Box fant ingen brukbare ROM-filer.\n\nVennligst last ned et ROM-sett og pakk det ut i \"roms\"-mappen." msgid "(empty)" -msgstr "(üres)" +msgstr "(tom)" msgid "All files" -msgstr "Minden fájl" +msgstr "Alle filer" msgid "Turbo" -msgstr "Turbó" +msgstr "Turbo" msgid "On" -msgstr "Bekapcsolva" +msgstr "På" msgid "Off" -msgstr "Kikapcsolva" +msgstr "Av" msgid "All images" -msgstr "Minden képfájl" +msgstr "Alle diskfiler" msgid "Basic sector images" -msgstr "Alapvető szektor képfájlok" +msgstr "Basis sektorfiler" msgid "Surface images" -msgstr "Felületi képfájlok" +msgstr "Surface-diskfiler" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "A számítógép \"%hs\" nem elérhető a \"roms/machines\" mappából hiányzó ROM-képek miatt. Ehelyett egy másik gép kerül futtatásra." +msgstr "Maskin \"%hs\" er ikke tilgjengelig på grunn av manglende ROM-er i roms/machines-mappen. Bytter til en tilgjengelig maskin." msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." -msgstr "A videokártya \"%hs\" nem elérhető a \"roms/video\" mappából hiányzó ROM-képek miatt. Ehelyett egy másik kártya kerül futtatásra." +msgstr "Grafikkort \"%hs\" er ikke tilgjengelig på grunn av manglende ROM-er i roms/video-mappen. Bytter til et tilgjengelig grafikkort." msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card." -msgstr "A videokártya 2 \"%hs\" nem elérhető a \"roms/video\" mappából hiányzó ROM-képek miatt. A második videokártya kerül letiltásra." +msgstr "Grafikkort #2 \"%hs\" er ikke tilgjengelig på grunn av manglende ROM-er i roms/video-mappen. Deaktiverer det andre grafikkortet." msgid "Device \"%hs\" is not available due to missing ROMs. Ignoring the device." -msgstr "Az eszköz \"%hs\" nem elérhető a hiányzó ROM-képek miatt. Az eszköz figyelmen kívül marad." +msgstr "Enhet \"%hs\" er ikke tilgjengelig på grunn av manglende ROM-er. Ignorerer enheten." msgid "Machine" -msgstr "Számítógép" +msgstr "Maskin" msgid "Display" -msgstr "Megjelenítő" +msgstr "Skjerm" msgid "Input devices" -msgstr "Beviteli eszközök" +msgstr "Inndataenheter" msgid "Sound" -msgstr "Hang" +msgstr "Lyd" msgid "Network" -msgstr "Hálózat" +msgstr "Nettverk" msgid "Ports (COM & LPT)" -msgstr "Portok (COM és LPT)" +msgstr "Porter (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Porter" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Seriellporter:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Parallellporter:" msgid "Storage controllers" -msgstr "Tárolóvezérlők" +msgstr "Lagringskontrollere" msgid "Hard disks" -msgstr "Merevlemezek" +msgstr "Harddisker" msgid "Disks:" -msgstr "" +msgstr "Disker:" msgid "Floppy:" -msgstr "" +msgstr "Diskett:" msgid "Controllers:" -msgstr "" +msgstr "Kontrollere:" msgid "Floppy & CD-ROM drives" -msgstr "Floppy és CD-ROM meghajtók" +msgstr "Diskett- og CD-ROM-stasjoner" msgid "Other removable devices" -msgstr "Egyéb cserélhető tárolók" +msgstr "Andre flyttbare enheter" msgid "Other peripherals" -msgstr "Egyéb perifériák" +msgstr "Andre eksterne enheter" msgid "Other devices" -msgstr "" +msgstr "Andre enheter" msgid "Click to capture mouse" -msgstr "Kattintson az egér elfogásához" +msgstr "Klikk for å fange mus" msgid "Press %1 to release mouse" -msgstr "Nyomja meg az %1-t az egér elengédéséhez" +msgstr "Trykk %1 for å slippe mus" msgid "Press %1 or middle button to release mouse" -msgstr "Nyomja meg az %1-t vagy a középső gombot az egér elengédéséhez" +msgstr "Trykk %1 eller midtknappen for å slippe mus" msgid "Bus" -msgstr "Busz" +msgstr "Buss" msgid "File" -msgstr "Fájl" +msgstr "Fil" msgid "C" msgstr "C" @@ -835,46 +835,46 @@ msgid "KB" msgstr "KB" msgid "Default" -msgstr "Alapértelmezett" +msgstr "Standard" msgid "%1 Wait state(s)" -msgstr "%1 várakozási ciklus(ok)" +msgstr "%1 ventetilstand(er)" msgid "Type" -msgstr "Típus" +msgstr "Type" msgid "No PCap devices found" -msgstr "Nem találhatóak PCap eszközök" +msgstr "Ingen PCap-enheter funnet" msgid "Invalid PCap device" -msgstr "Érvénytelen PCap eszköz" +msgstr "Ugyldig PCap-enhet" msgid "2-axis, 2-button joystick(s)" -msgstr "2-tengelyes, 2-gombos játékvezérlő(k)" +msgstr "2-akset, 2-knapps styrespak(er)" msgid "2-axis, 4-button joystick" -msgstr "2-tengelyes, 4-gombos játékvezérlő" +msgstr "2-akset, 4-knapps styrespak" msgid "2-axis, 6-button joystick" -msgstr "2-tengelyes, 6-gombos játékvezérlő" +msgstr "2-akset, 6-knapps styrespak" msgid "2-axis, 8-button joystick" -msgstr "2-tengelyes, 8-gombos játékvezérlő" +msgstr "2-akset, 8-knapps styrespak" msgid "3-axis, 2-button joystick" -msgstr "3-tengelyes, 2-gombos játékvezérlő" +msgstr "3-akset, 2-knapps styrespak" msgid "3-axis, 4-button joystick" -msgstr "3-tengelyes, 4-gombos játékvezérlő" +msgstr "3-akset, 4-knapps styrespak" msgid "4-axis, 4-button joystick" -msgstr "4-tengelyes, 4-gombos játékvezérlő" +msgstr "4-akset, 4-knapps styrespak" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedaler" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,58 +883,58 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Ror-kontrollsystem" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2-knapps gamepad(er)" msgid "2-button flight yoke" -msgstr "" +msgstr "2-knapps flystyre" msgid "4-button gamepad" -msgstr "" +msgstr "4-knapps gamepad" msgid "4-button flight yoke" -msgstr "" +msgstr "4-knapps flystyre" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2-knapps flystyre med gass" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4-knapps flystyre med gass" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95 Ratt (3-akset, 4-knapps)" msgid "None" -msgstr "Nincs" +msgstr "Ingen" msgid "%1 MB (CHS: %2, %3, %4)" msgstr "%1 MB (CHS: %2, %3, %4)" msgid "Floppy %1 (%2): %3" -msgstr "Floppy %1 (%2): %3" +msgstr "Diskett %1 (%2): %3" msgid "&Floppy %1 (%2): %3" -msgstr "&Floppy %1 (%2): %3" +msgstr "&Diskett %1 (%2): %3" msgid "Advanced sector images" -msgstr "Továbbfejlesztett szektor képek" +msgstr "Avanserte sektorfiler" msgid "Flux images" -msgstr "Flux képekfájlok" +msgstr "Flux-diskfiler" msgid "Are you sure you want to hard reset the emulated machine?" -msgstr "Biztosan szeretné újraindítani az emulált gépet?" +msgstr "Er du sikker på at du vil utføre en hard tilbakestilling på den emulerte maskinen?" msgid "Are you sure you want to exit 86Box?" -msgstr "Biztos benne, hogy ki szeretne lépni a 86Box-ból?" +msgstr "Er du sikker på at du vil avslutte 86Box?" msgid "Unable to initialize Ghostscript" -msgstr "Nem sikerült inicializálni a Ghostscript-et" +msgstr "Kan ikke initialisere Ghostscript" msgid "Unable to initialize GhostPCL" -msgstr "Nem sikerült inicializálni a GhostPCL-et" +msgstr "Kan ikke initialisere GhostPCL" msgid "MO %1 (%2): %3" msgstr "MO %1 (%2): %3" @@ -943,526 +943,532 @@ msgid "&MO %1 (%2): %3" msgstr "&MO %1 (%2): %3" msgid "MO images" -msgstr "MO-képfájlok" +msgstr "MO-filer" msgid "Welcome to 86Box!" -msgstr "Üdvözli önt az 86Box!" +msgstr "Velkommen til 86Box!" msgid "Internal device" -msgstr "Integrált eszköz" +msgstr "Intern enhet" msgid "&File" -msgstr "" +msgstr "&Fil" msgid "&New machine..." -msgstr "" +msgstr "&Ny maskin..." msgid "&Check for updates..." -msgstr "" +msgstr "&Sjekk etter oppdateringer..." msgid "Exit" -msgstr "Kilépés" +msgstr "Avslutt" msgid "No ROMs found" -msgstr "Nem találhatóak meg a ROM-képek" +msgstr "Ingen ROM-er funnet" msgid "Do you want to save the settings?" -msgstr "Szeretné menteni a beállításokat?" +msgstr "Vil du lagre innstillingene?" msgid "This will hard reset the emulated machine." -msgstr "Ezzel hardveresen újraindítja az emulált gépet." +msgstr "Dette vil hard-resette den emulerte maskinen." msgid "Save" -msgstr "Mentés" +msgstr "Lagre" msgid "About 86Box" -msgstr "A 86Box névjegye" +msgstr "Om 86Box" msgid "86Box v" msgstr "86Box v" msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information." -msgstr "Régi számítógépek emulátora\n\nFejlesztők: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nSarah Walker, leilei, JohnElliott, greatpsycho és mások korábbi alapvető hozzájárulásával.\n\nFordította: Laci bá'\n\nMegjelent a GNU General Public License v2 vagy újabb alatt. További információért lásd a LICENSE fájlt." +msgstr "En emulator for gamle datamaskiner\n\nForfattere: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne og andre.\n\nMed tidligere kjernebidrag fra Sarah Walker, leilei, JohnElliott, greatpsycho og andre.\n\nUtgitt under GNU General Public License versjon 2 eller senere. Se LICENSE for mer informasjon." msgid "Hardware not available" -msgstr "Hardver nem elérhető" +msgstr "Maskinvare ikke tilgjengelig" msgid "Make sure %1 is installed and that you are on a %1-compatible network connection." -msgstr "Győződjön meg hogy a(z) %1 telepítve van és jelenleg a %1-kompatibilis kapcsolatot használja." +msgstr "Sørg for at %1 er installert og at du er på en %1-kompatibel nettverkstilkobling." msgid "Invalid configuration" -msgstr "Érvénytelen konfiguráció" +msgstr "Ugyldig konfigurasjon" msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." -msgstr "%1 szükséges a PostScript fájlok PDF formátumba való automatikus konvertálásához.\n\nAz általános PostScript nyomtatóra küldött dokumentumok PostScript (.ps) fájlként kerülnek mentésre." +msgstr "%1 kreves for automatisk konvertering av PostScript-filer til PDF.\n\nDokumenter sendt til den generiske PostScript-skriveren vil lagres som PostScript (.ps)-filer." msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files." -msgstr "%1 szükséges a PCL fájlok PDF formátumba való automatikus konvertálásához.\n\nAz általános PCL nyomtatóra küldött dokumentumok Printer Command Language (.pcl) fájlként kerülnek mentésre." +msgstr "%1 kreves for automatisk konvertering av PCL-filer til PDF.\n\nDokumenter sendt til den generiske PCL-skriveren vil lagres som Printer Command Language (.pcl)-filer." msgid "Don't show this message again" -msgstr "Ne jelenítse meg újra ezt az üzenetet " +msgstr "Ikke vis denne meldingen igjen" msgid "Don't exit" -msgstr "Ne lépjen ki" +msgstr "Ikke avslutt" msgid "Reset" -msgstr "Újraindítás" +msgstr "Nullstill" msgid "Don't reset" -msgstr "Ne indítsa újra" +msgstr "Ikke nullstill" msgid "CD-ROM images" -msgstr "CD-ROM-képek" +msgstr "CD-ROM-filer" msgid "%1 Device Configuration" -msgstr "%1 eszközkonfiguráció" +msgstr "%1 Enhetskonfigurasjon" msgid "Monitor in sleep mode" -msgstr "Képernyő alvó módban" +msgstr "Skjerm i hvilemodus" msgid "GLSL shaders" -msgstr "GLSL shaderek" +msgstr "GLSL-shadere" msgid "You are loading an unsupported configuration" -msgstr "Egy nem támogatott konfigurációt tölt be" +msgstr "Du laster en ikke-støttet konfigurasjon" msgid "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid." -msgstr "A kiválasztott gépen alapuló CPU-típusszűrés le van tiltva ezen az emulált gépen.\n\nEz lehetővé teszi olyan CPU kiválasztását, amely egyébként nem kompatibilis a kiválasztott géppel. Előfordulhat azonban, hogy nem kompatibilis a gép BIOS-ával vagy más szoftverekkel.\n\nA beállítás engedélyezése hivatalosan nem támogatott, és a benyújtott hibajelentéseket érvénytelenként lezárhatjuk." +msgstr "CPU-typefiltrering basert på valgt maskin er deaktivert for denne emulerte maskinen.\n\nDette gjør det mulig å velge en CPU som ellers er inkompatibel med den valgte maskinen. Du kan imidlertid støte på inkompatibilitet med maskinens BIOS eller annen programvare.\n\nAktivering av denne innstillingen er ikke offisielt støttet, og eventuelle innsendte feilrapporter kan bli avvist som ugyldige." msgid "Continue" -msgstr "Folytatás" +msgstr "Fortsett" msgid "Cassette: %1" -msgstr "Magnókazetta: %1" +msgstr "Kassett: %1" msgid "C&assette: %1" -msgstr "M&agnókazetta: %1" +msgstr "K&assett: %1" msgid "Cassette images" -msgstr "Magnókazetta-képek" +msgstr "Kassettfiler" msgid "Cartridge %1: %2" -msgstr "ROM-kazetta %1: %2" +msgstr "Kassett %1: %2" msgid "Car&tridge %1: %2" -msgstr "ROM-kaze&tta %1: %2" +msgstr "Kas&sett %1: %2" msgid "Cartridge images" -msgstr "ROM-kazetta képek" +msgstr "Kassettfiler" msgid "Resume execution" -msgstr "Folytassa a végrehajtást" +msgstr "Fortsett kjøring" msgid "Pause execution" -msgstr "Kivitelezés szüneteltetése" +msgstr "Pause kjøring" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" -msgstr "Nyomja meg a Ctrl+Alt+Del" +msgstr "Trykk Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Esc" -msgstr "Nyomja meg a Ctrl+Alt+Esc" +msgstr "Trykk Ctrl+Alt+Esc" msgid "Hard reset" -msgstr "Hardveres újraindítás" +msgstr "Hard-tilbakestilling" msgid "Force shutdown" -msgstr "" +msgstr "Tvangsavslutt" msgid "Start" -msgstr "" +msgstr "Start" msgid "Not running" -msgstr "" +msgstr "Ikke kjørende" msgid "Running" -msgstr "" +msgstr "Kjører" msgid "Paused" -msgstr "" +msgstr "Satt på pause" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Venter" msgid "Powered Off" -msgstr "" +msgstr "Slått av" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n kjørende" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n satt på pause" + +msgid "%n waiting" +msgstr "%n venter" + +msgid "%1 total" +msgstr "%1 totalt" + +msgid "VMs: %1" +msgstr "VM-er: %1" msgid "System Directory:" -msgstr "" +msgstr "Systemmappe:" msgid "Choose directory" -msgstr "" +msgstr "Velg mappe" msgid "Choose configuration file" -msgstr "" +msgstr "Velg konfigurasjonsfil" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box konfigurasjonsfiler (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Lesing av konfigurasjon mislyktes" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Kan ikke åpne valgt konfigurasjonsfil for lesing: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Bruk regulære uttrykk i søkeboksen" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 maskin(er) er for øyeblikket aktive. Er du sikker på at du vil avslutte VM-administratoren uansett?" msgid "Add new system wizard" -msgstr "" +msgstr "Legg til ny system-veiviser" msgid "Introduction" -msgstr "" +msgstr "Introduksjon" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Dette vil hjelpe deg med å legge til et nytt system i 86Box." msgid "New configuration" -msgstr "" +msgstr "Ny konfigurasjon" msgid "Complete" -msgstr "" +msgstr "Fullfør" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Veiviseren vil nå starte konfigurasjonen for det nye systemet." msgid "Use existing configuration" -msgstr "" +msgstr "Bruk eksisterende konfigurasjon" msgid "Type some notes here" -msgstr "" +msgstr "Skriv noen notater her" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Lim inn innholdet fra den eksisterende konfigurasjonsfilen i boksen nedenfor." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Last konfigurasjon fra fil" msgid "System name" -msgstr "" +msgstr "Systemnavn" msgid "System name:" -msgstr "" +msgstr "Systemnavn:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Systemnavnet kan ikke inneholde visse tegn" msgid "System name already exists" -msgstr "" +msgstr "Systemnavnet finnes allerede" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Vennligst skriv inn en mappe for systemet" msgid "Directory does not exist" -msgstr "" +msgstr "Mappen eksisterer ikke" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "En ny mappe for systemet vil bli opprettet i den valgte mappen ovenfor" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Systemplassering:" msgid "System name and location" -msgstr "" +msgstr "Systemnavn og plassering" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Skriv inn systemets navn og velg plassering" msgid "Enter the name of the system" -msgstr "" +msgstr "Skriv inn systemnavnet" msgid "Please enter a system name" -msgstr "" +msgstr "Vennligst skriv inn et systemnavn" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Visningsnavn (valgfritt):" msgid "Display name:" -msgstr "" +msgstr "Visningsnavn:" msgid "Set display name" -msgstr "" +msgstr "Angi visningsnavn" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Skriv inn nytt visningsnavn (tomt for å tilbakestille)" msgid "Change &display name..." -msgstr "" +msgstr "Endre &visningsnavn..." msgid "Context Menu" -msgstr "" +msgstr "Kontekstmeny" msgid "&Open folder..." -msgstr "" +msgstr "&Åpne mappe..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Åpne p&rinter-skuff..." msgid "Set &icon..." -msgstr "" +msgstr "Angi &ikon..." msgid "Select an icon" -msgstr "" +msgstr "Velg et ikon" msgid "C&lone..." -msgstr "" +msgstr "K&lon..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuell maskin \"%1\" (%2) vil bli klonet til:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Mappen %1 finnes allerede" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Du kan ikke bruke følgende tegn i navnet: %1" msgid "Clone" -msgstr "" +msgstr "Klon" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Kunne ikke opprette mappe for klonet VM" msgid "Failed to clone VM." -msgstr "" +msgstr "Kloning av VM mislyktes." msgid "Directory in use" -msgstr "" +msgstr "Mappe i bruk" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Den valgte mappen er allerede i bruk. Vennligst velg en annen mappe." msgid "Create directory failed" -msgstr "" +msgstr "Oppretting av mappe mislyktes" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Kunne ikke opprette mappe for det nye systemet" msgid "Configuration write failed" -msgstr "" +msgstr "Skriving av konfigurasjon mislyktes" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Kunne ikke åpne konfigurasjonsfilen på %1 for skriving" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Feil ved legg til system" msgid "Remove directory failed" -msgstr "" +msgstr "Fjerning av mappe mislyktes" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Noen filer i maskinens mappe kunne ikke slettes. Vennligst slett dem manuelt." msgid "Build" -msgstr "" +msgstr "Bygg" msgid "Version" -msgstr "" +msgstr "Versjon" + +msgid "An update to 86Box is available: %1 %2" +msgstr "En oppdatering til 86Box er tilgjengelig: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "En feil oppstod under sjekking av oppdateringer: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "En oppdatering til 86Box er tilgjengelig!" msgid "Warning" -msgstr "" +msgstr "Advarsel" msgid "&Kill" -msgstr "" +msgstr "&Avslutt prosess" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Å avslutte en virtuell maskin kan føre til datatap. Gjør dette kun hvis 86Box-prosessen henger.\n\nVil du virkelig avslutte den virtuelle maskinen \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Slett" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Vil du virkelig slette den virtuelle maskinen \"%1\" og alle dens filer? Denne handlingen kan ikke angres!" msgid "Show &config file" -msgstr "" +msgstr "Vis &konfigurasjonsfil" msgid "No screenshot" -msgstr "" +msgstr "Ingen skjermbilde" msgid "Search" -msgstr "" +msgstr "Søk" msgid "Searching for VMs..." -msgstr "" +msgstr "Søker etter VMer..." msgid "Found %1" -msgstr "" +msgstr "Fant %1" msgid "System" -msgstr "" +msgstr "System" msgid "Storage" -msgstr "" +msgstr "Lagring" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1:" msgid "No disks" -msgstr "" +msgstr "Ingen disker" msgid "Audio" -msgstr "" +msgstr "Lyd" msgid "Audio:" -msgstr "" +msgstr "Lyd:" msgid "ACPI shutdown" -msgstr "ACPI leállítás" +msgstr "ACPI-avstenging" msgid "ACP&I shutdown" -msgstr "ACP&I leállítás" +msgstr "ACP&I-avstenging" msgid "Hard disk (%1)" -msgstr "Merevlemez (%1)" +msgstr "Harddisk (%1)" msgid "MFM/RLL or ESDI CD-ROM drives never existed" -msgstr "MFM/RLL vagy ESDI CD-ROM meghajtók soha nem léteztek" +msgstr "MFM/RLL eller ESDI CD-ROM-stasjoner eksisterte aldri" msgid "Custom..." -msgstr "Egyéni..." +msgstr "Tilpasset..." msgid "Custom (large)..." -msgstr "Egyéni (nagy)..." +msgstr "Tilpasset (stor)..." msgid "Add New Hard Disk" -msgstr "Új merevlemez hozzáadása" +msgstr "Legg til ny harddisk" msgid "Add Existing Hard Disk" -msgstr "Meglévő merevlemez hozzáadása" +msgstr "Legg til eksisterende harddisk" msgid "HDI disk images cannot be larger than 4 GB." -msgstr "A HDI lemezképek nem lehetnek nagyobbak 4 GB-nál." +msgstr "HDI-diskbilder kan ikke være større enn 4 GB." msgid "Disk images cannot be larger than 127 GB." -msgstr "A lemezképek mérete nem haladhatja meg a 127 GB-ot." +msgstr "Diskbilder kan ikke være større enn 127 GB." msgid "Hard disk images" -msgstr "Merevlemez-képfájlok" +msgstr "Harddiskbilder" msgid "Unable to read file" -msgstr "A fájl nem olvasható" +msgstr "Kunne ikke lese fil" msgid "Unable to write file" -msgstr "A fájl nem írható" +msgstr "Kunne ikke skrive fil" msgid "HDI or HDX images with a sector size other than 512 are not supported." -msgstr "Az 512-től eltérő szektorméretű HDI vagy HDX képek nem támogatottak." +msgstr "HDI- eller HDX-bilder med en sektorstørrelse annen enn 512 støttes ikke." msgid "Disk image file already exists" -msgstr "A lemezképfájl már létezik" +msgstr "Diskbildefilen finnes allerede" msgid "Please specify a valid file name." -msgstr "Adjon meg egy érvényes fájlnevet." +msgstr "Vennligst spesifiser et gyldig filnavn." msgid "Disk image created" -msgstr "A lemezképfájl létrehozásra került" +msgstr "Diskbilde opprettet" msgid "Make sure the file exists and is readable." -msgstr "Győződjön meg arról, hogy a fájl létezik és olvasható." +msgstr "Sørg for at filen eksisterer og kan leses." msgid "Make sure the file is being saved to a writable directory." -msgstr "Győződjön meg arról, hogy a fájlt egy írható könyvtárba menti." +msgstr "Sørg for at filen lagres i en skrivbar mappe." msgid "Disk image too large" -msgstr "A lemezképfájl túl nagy" +msgstr "Diskbilde for stort" msgid "Remember to partition and format the newly-created drive." -msgstr "Ne felejtse el particionálni és formázni az újonnan létrehozott meghajtót." +msgstr "Husk å partisjonere og formatere den nyopprettede disken." msgid "The selected file will be overwritten. Are you sure you want to use it?" -msgstr "A kiválasztott fájl felülírásra kerül. Biztos, hogy ezt kívánja használni?" +msgstr "Den valgte filen vil bli overskrevet. Er du sikker på at du vil bruke den?" msgid "Unsupported disk image" -msgstr "Nem támogatott lemezkép" +msgstr "Ustøttet diskbilde" msgid "Overwrite" -msgstr "Felülírás" +msgstr "Overskriv" msgid "Don't overwrite" -msgstr "Ne írja felül" +msgstr "Ikke overskriv" msgid "Raw image" -msgstr "Nyers lemezkép" +msgstr "Råbilde" msgid "HDI image" -msgstr "HDI-lemezkép" +msgstr "HDI-bilde" msgid "HDX image" -msgstr "HDX-lemezkép" +msgstr "HDX-bilde" msgid "Fixed-size VHD" -msgstr "Rögzített méretű VHD" +msgstr "VHD med fast størrelse" msgid "Dynamic-size VHD" -msgstr "Dinamikusan bővülő VHD" +msgstr "VHD med dynamisk størrelse" msgid "Differencing VHD" -msgstr "Különbség-VHD" +msgstr "Differensierende VHD" msgid "(N/A)" -msgstr "(Nincs)" +msgstr "(N/A)" msgid "Raw image (.img)" -msgstr "Nyers lemezkép (.img)" +msgstr "Råbilde (.img)" msgid "HDI image (.hdi)" -msgstr "HDI-lemezkép (.hdi)" +msgstr "HDI-bilde (.hdi)" msgid "HDX image (.hdx)" -msgstr "HDX-lemezkép (.hdx)" +msgstr "HDX-bilde (.hdx)" msgid "Fixed-size VHD (.vhd)" -msgstr "Rögzített méretű VHD (.vhd)" +msgstr "VHD med fast størrelse (.vhd)" msgid "Dynamic-size VHD (.vhd)" -msgstr "Dinamikusan bővülő VHD (.vhd)" +msgstr "VHD med dynamisk størrelse (.vhd)" msgid "Differencing VHD (.vhd)" -msgstr "Különbség-VHD (.vhd)" +msgstr "Differensierende VHD (.vhd)" msgid "Large blocks (2 MB)" -msgstr "Nagy blokkméret (2 MB)" +msgstr "Store blokker (2 MB)" msgid "Small blocks (512 KB)" -msgstr "Kis blokkméret (512 KB)" +msgstr "Små blokker (512 KB)" msgid "VHD files" -msgstr "VHD fájlok" +msgstr "VHD-filer" msgid "Select the parent VHD" -msgstr "Válassza ki a szülő VHD-t" +msgstr "Velg overordnet VHD" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "Ez azt jelentheti, hogy a szülőkép módosult az eltérő kép létrehozása után.\n\nEz akkor is előfordulhat, ha a képfájlokat áthelyezték vagy másolták, vagy a lemezt létrehozó program hibája miatt.\n\nSzeretné kijavítani az időbélyegeket?" +msgstr "Dette kan bety at det overordnede bildet ble endret etter at differansebildet ble opprettet.\n\nDet kan også skje hvis bildefilene ble flyttet eller kopiert, eller på grunn av en feil i programmet som opprettet denne disken.\n\nVil du rette tidsstemplene?" msgid "Parent and child disk timestamps do not match" -msgstr "A szülő- és a gyermeklemez időbélyegei nem egyeznek" +msgstr "Tidsstemplene til overordnet og underordnet disk samsvarer ikke" msgid "Could not fix VHD timestamp." -msgstr "Nem sikerült kijavítani a VHD időbélyegét." +msgstr "Kunne ikke rette VHD-tidsstempel." msgid "MFM/RLL" msgstr "MFM/RLL" @@ -1504,886 +1510,883 @@ msgid "720 KB" msgstr "720 KB" msgid "1.2 MB" -msgstr "1.2 MB" +msgstr "1,2 MB" msgid "1.25 MB" -msgstr "1.25 MB" +msgstr "1,25 MB" msgid "1.44 MB" -msgstr "1.44 MB" +msgstr "1,44 MB" msgid "DMF (cluster 1024)" -msgstr "DMF (1024 klaszter)" +msgstr "DMF (klynge 1024)" msgid "DMF (cluster 2048)" -msgstr "DMF (2048 klaszter)" +msgstr "DMF (klynge 2048)" msgid "2.88 MB" -msgstr "2.88 MB" +msgstr "2,88 MB" msgid "ZIP 100" msgstr "ZIP 100" msgid "3.5\" 128 MB (ISO 10090)" -msgstr "3.5\" 128 MB (ISO 10090)" +msgstr "3,5\" 128 MB (ISO 10090)" msgid "3.5\" 230 MB (ISO 13963)" -msgstr "3.5\" 230 MB (ISO 13963)" +msgstr "3,5\" 230 MB (ISO 13963)" msgid "3.5\" 540 MB (ISO 15498)" -msgstr "3.5\" 540 MB (ISO 15498)" +msgstr "3,5\" 540 MB (ISO 15498)" msgid "3.5\" 640 MB (ISO 15498)" -msgstr "3.5\" 640 MB (ISO 15498)" +msgstr "3,5\" 640 MB (ISO 15498)" msgid "3.5\" 1.3 GB (GigaMO)" -msgstr "3.5\" 1.3 GB (GigaMO)" +msgstr "3,5\" 1,3 GB (GigaMO)" msgid "3.5\" 2.3 GB (GigaMO 2)" -msgstr "3.5\" 2.3 GB (GigaMO 2)" +msgstr "3,5\" 2,3 GB (GigaMO 2)" msgid "5.25\" 600 MB" -msgstr "5.25\" 600 MB" +msgstr "5,25\" 600 MB" msgid "5.25\" 650 MB" -msgstr "5.25\" 650 MB" +msgstr "5,25\" 650 MB" msgid "5.25\" 1 GB" -msgstr "5.25\" 1 GB" +msgstr "5,25\" 1 GB" msgid "5.25\" 1.3 GB" -msgstr "5.25\" 1.3 GB" +msgstr "5,25\" 1,3 GB" msgid "Perfect RPM" -msgstr "Tökéletes RPM" +msgstr "Perfekt RPM" msgid "1% below perfect RPM" -msgstr "1%-kal a tökéletes RPM alatt" +msgstr "1 % under perfekt RPM" msgid "1.5% below perfect RPM" -msgstr "1.5%-kal a tökéletes RPM alatt" +msgstr "1,5 % under perfekt RPM" msgid "2% below perfect RPM" -msgstr "2%-kal a tökéletes RPM alatt" +msgstr "2 % under perfekt RPM" msgid "(System Default)" -msgstr "(A rendszer nyelve)" +msgstr "(Systemstandard)" msgid "Failed to initialize network driver" -msgstr "Nem sikerült inicializálni a hálózati illesztőprogramot" +msgstr "Kunne ikke initialisere nettverksdriver" msgid "The network configuration will be switched to the null driver" -msgstr "A hálózati konfiguráció átvált a null illesztőprogramra" +msgstr "Nettverkskonfigurasjonen vil bli byttet til null-driver" msgid "Mouse sensitivity:" -msgstr "Egér érzékenység:" +msgstr "Musesensitivitet:" msgid "Select media images from program working directory" -msgstr "Médiaképek kiválasztása a program munkakönyvtárából" +msgstr "Velg mediebilder fra programmets arbeidsmappe" msgid "PIT mode:" -msgstr "PIT üzemmód:" +msgstr "PIT-modus:" msgid "Auto" -msgstr "Automatikus" +msgstr "Auto" msgid "Slow" -msgstr "Lassú" +msgstr "Sakte" msgid "Fast" -msgstr "Gyors" +msgstr "Rask" msgid "&Auto-pause on focus loss" -msgstr "&Automatikus szünet fókuszvesztéskor" +msgstr "&Automatisk pause ved tap av fokus" msgid "WinBox is no longer supported" -msgstr "A WinBox már nem támogatott" +msgstr "WinBox støttes ikke lenger" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "A WinBox menedzser fejlesztése 2022-ben leállt karbantartók hiányában. Mivel erőfeszítéseinket a 86Box még jobbá tételére irányítjuk, úgy döntöttünk, hogy a WinBox-ot mint menedzsert nem támogatjuk tovább.\n\nA WinBoxon keresztül nem lesznek további frissítések, és hibás viselkedéssel találkozhat, ha továbbra is a 86Box újabb verzióival használja. A WinBox viselkedésével kapcsolatos hibajelentéseket érvénytelennek nyilvánítjuk.\n\nA 86box.net oldalon talál egy listát más kezelőkről, amelyeket használhat." +msgstr "Utviklingen av WinBox-behandleren ble stoppet i 2022 på grunn av mangel på vedlikeholdere. Siden vi fokuserer på å gjøre 86Box enda bedre, har vi besluttet å ikke lenger støtte WinBox som behandler.\n\nIngen flere oppdateringer vil bli gitt gjennom WinBox, og du kan oppleve feil oppførsel hvis du fortsetter å bruke den med nyere versjoner av 86Box. Feilrapporter relatert til WinBox vil bli lukket som ugyldige.\n\nGå til 86box.net for en liste over andre behandlere du kan bruke." msgid "Generate" -msgstr "Generálja" +msgstr "Generer" msgid "Joystick configuration" -msgstr "Joystick konfiguráció" +msgstr "Styrespak-konfigurasjon" msgid "Device" -msgstr "Eszköz" +msgstr "Enhet" msgid "%1 (X axis)" -msgstr "%1 (X tengely)" +msgstr "%1 (X-akse)" msgid "%1 (Y axis)" -msgstr "%1 (Y tengely)" +msgstr "%1 (Y-akse)" msgid "MCA devices" -msgstr "MCA eszközök" +msgstr "MCA-enheter" msgid "List of MCA devices:" -msgstr "Az MCA-eszközök listája:" +msgstr "Liste over MCA-enheter:" msgid "&Tablet tool" -msgstr "Tablet eszköz" - -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" +msgstr "&Tegnebrettverktøy" msgid "About &Qt" -msgstr "A &Qt-ről" +msgstr "Om &Qt" msgid "&MCA devices..." -msgstr "MCA eszközök..." +msgstr "&MCA-enheter..." msgid "Show non-&primary monitors" -msgstr "Nem elsődleges monitorok megjelenítése" +msgstr "Vis ikke-&primære skjermer" msgid "Open screenshots &folder..." -msgstr "Nyissa meg a képernyőképek mappát..." +msgstr "Åpne skjermbilde&mappe..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Teljes képernyős méretezés alkalmazása maximalizáláskor" +msgstr "Bruk fullskjerms&strekkmodus ved maksimering" msgid "&Cursor/Puck" -msgstr "&Cursor/Puck" +msgstr "&Markør/pekeplate" msgid "&Pen" -msgstr "&Toll" +msgstr "&Penn" msgid "&Host CD/DVD Drive (%1:)" -msgstr "&Gazdag CD/DVD-meghajtó (%1:)" +msgstr "&Vert CD/DVD-stasjon (%1:)" msgid "&Connected" -msgstr "" +msgstr "&Koblet til" msgid "Clear image &history" -msgstr "Törölje a kép &előzményeit" +msgstr "Tøm bilde&historikk" msgid "Create..." -msgstr "Hozzon létre..." +msgstr "Opprett..." msgid "Host CD/DVD Drive (%1)" -msgstr "Gazdag CD/DVD-meghajtó (%1)" +msgstr "Vert CD/DVD-stasjon (%1)" msgid "Unknown Bus" -msgstr "Ismeretlen busz" +msgstr "Ukjent buss" msgid "Null Driver" -msgstr "Null Driver" +msgstr "Null-driver" msgid "NIC:" -msgstr "" +msgstr "Nettverkskort:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Nettverkskort %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Nettverkskort %1 (%2) %3" msgid "Render behavior" -msgstr "Renderelési viselkedés" +msgstr "Gjengivelsesatferd" msgid "Use target framerate:" -msgstr "Cél képkockasebesség használata:" +msgstr "Bruk mål-bilderate:" msgid " fps" -msgstr " fps" +msgstr " bps" msgid "VSync" msgstr "VSync" msgid "Synchronize with video" -msgstr "Szinkronizálás a videóval" +msgstr "Synkroniser med video" msgid "Shaders" -msgstr "Shaderek" +msgstr "Shader-programmer" msgid "Remove" -msgstr "Távolítsa el a" +msgstr "Fjern" msgid "Browse..." -msgstr "Böngésszen..." +msgstr "Bla gjennom..." msgid "Couldn't create OpenGL context." -msgstr "Nem sikerült OpenGL-kontextust létrehozni." +msgstr "Kunne ikke opprette OpenGL-kontekst." msgid "Couldn't switch to OpenGL context." -msgstr "Nem tudott OpenGL-kontextusra váltani." +msgstr "Kunne ikke bytte til OpenGL-kontekst." msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2" -msgstr "Az OpenGL 3.0 vagy magasabb verziója szükséges. Az aktuális verzió %1.%2" +msgstr "OpenGL versjon 3.0 eller høyere kreves. Nåværende versjon er %1.%2" msgid "Error initializing OpenGL" -msgstr "Hiba az OpenGL inicializálásában" +msgstr "Feil ved initialisering av OpenGL" msgid "\nFalling back to software rendering." -msgstr "\nVisszatérés a szoftveres rendereléshez." +msgstr "\nFaller tilbake til programvaregjengivelse." msgid "

When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.

" -msgstr "

A médiaképek (CD-ROM, floppy stb.) kiválasztásakor a megnyitási párbeszédpanel ugyanabban a könyvtárban indul, mint a 86Box konfigurációs fájl. Ez a beállítás valószínűleg csak a macOS rendszerben jelent különbséget.

" +msgstr "

Når du velger mediebilder (CD-ROM, diskett osv.), vil åpningsdialogen starte i samme mappe som 86Box-konfigurasjonsfilen. Denne innstillingen vil sannsynligvis bare ha betydning på macOS.

" msgid "This machine might have been moved or copied." -msgstr "Lehet, hogy ezt a gépet áthelyezték vagy lemásolták." +msgstr "Denne maskinen kan ha blitt flyttet eller kopiert." msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." -msgstr "A megfelelő hálózati működés biztosítása érdekében a 86Box-nak tudnia kell, hogy a gépet áthelyezték vagy másolták-e.\n\nVálassza a \"Lemásoltam\" lehetőséget, ha nem biztos benne." +msgstr "For å sikre korrekt nettverksfunksjonalitet, må 86Box vite om denne maskinen ble flyttet eller kopiert.\n\nVelg \"Jeg kopierte den\" hvis du er usikker." msgid "I Moved It" -msgstr "Elmozdítottam" +msgstr "Jeg flyttet den" msgid "I Copied It" -msgstr "Lemásoltam" +msgstr "Jeg kopierte den" msgid "86Box Monitor #" -msgstr "86Box Monitor " +msgstr "86Box-skjerm #" msgid "No MCA devices." -msgstr "Nincsenek MCA eszközök." +msgstr "Ingen MCA-enheter." msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" -msgstr "Hálózati kártya 1" +msgstr "Nettverkskort #1" msgid "Network Card #2" -msgstr "Hálózati kártya 2" +msgstr "Nettverkskort #2" msgid "Network Card #3" -msgstr "Hálózati kártya 3" +msgstr "Nettverkskort #3" msgid "Network Card #4" -msgstr "Hálózati kártya 4" +msgstr "Nettverkskort #4" msgid "Mode:" -msgstr "Mód:" +msgstr "Modus:" msgid "Interface:" -msgstr "Interfész:" +msgstr "Grensesnitt:" msgid "Adapter:" msgstr "Adapter:" msgid "VDE Socket:" -msgstr "VDE aljzat:" +msgstr "VDE-kontakt:" msgid "86Box Unit Tester" -msgstr "86Box Unit Tester" +msgstr "86Box-enhetstester" msgid "Novell NetWare 2.x Key Card" -msgstr "Novell NetWare 2.x kulcskártya" +msgstr "Novell NetWare 2.x nøkkelkort" msgid "Serial port passthrough 1" -msgstr "Soros port áthaladás 1" +msgstr "Seriell port-gjennomkobling 1" msgid "Serial port passthrough 2" -msgstr "Soros port áthaladás 2" +msgstr "Seriell port-gjennomkobling 2" msgid "Serial port passthrough 3" -msgstr "Soros port áthaladás 3" +msgstr "Seriell port-gjennomkobling 3" msgid "Serial port passthrough 4" -msgstr "Soros port áthaladás 4" +msgstr "Seriell port-gjennomkobling 4" msgid "Renderer &options..." -msgstr "Renderer opciók..." +msgstr "Gjengivelses&alternativer..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT-tastatur" msgid "AT Keyboard" -msgstr "" +msgstr "AT-tastatur" msgid "AX Keyboard" -msgstr "" +msgstr "AX-tastatur" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2-tastatur" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55-tastatur" msgid "Keys" -msgstr "" +msgstr "Taster" msgid "Logitech/Microsoft Bus Mouse" -msgstr "Logitech/Microsoft busz egér" +msgstr "Logitech/Microsoft-bussmus" msgid "Microsoft Bus Mouse (InPort)" -msgstr "Microsoft buszos egér (InPort)" +msgstr "Microsoft-bussmus (InPort)" msgid "Mouse Systems Serial Mouse" -msgstr "Egérrendszerek Soros egér" +msgstr "Mouse Systems-seriell mus" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Mouse Systems-bussmus" msgid "Microsoft Serial Mouse" -msgstr "Microsoft soros egér" +msgstr "Microsoft-seriell mus" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Microsoft-seriell BallPoint" msgid "Logitech Serial Mouse" -msgstr "Logitech soros egér" +msgstr "Logitech-seriell mus" msgid "PS/2 Mouse" -msgstr "PS/2 egér" +msgstr "PS/2-mus" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort-mus" msgid "3M MicroTouch (Serial)" -msgstr "3M MicroTouch (soros)" +msgstr "3M MicroTouch (seriell)" msgid "Default Baud rate" -msgstr "" +msgstr "Standard baudrate" msgid "[COM] Standard Hayes-compliant Modem" -msgstr "[COM] Szabványos Hayes-kompatibilis modem" +msgstr "[COM] Standard Hayes-kompatibelt modem" msgid "Roland MT-32 Emulation" -msgstr "Roland MT-32 emuláció" +msgstr "Roland MT-32-emulering" msgid "Roland MT-32 (New) Emulation" -msgstr "Roland MT-32 (Új) Emuláció" +msgstr "Roland MT-32 (Ny)-emulering" msgid "Roland CM-32L Emulation" -msgstr "Roland CM-32L emuláció" +msgstr "Roland CM-32L-emulering" msgid "Roland CM-32LN Emulation" -msgstr "Roland CM-32LN emuláció" +msgstr "Roland CM-32LN-emulering" msgid "OPL4-ML Daughterboard" -msgstr "OPL4-ML alaplap" +msgstr "OPL4-ML-tilleggskort" msgid "System MIDI" -msgstr "Rendszer MIDI" +msgstr "System-MIDI" msgid "MIDI Input Device" -msgstr "MIDI bemeneti eszköz" +msgstr "MIDI-inngangsenhet" msgid "BIOS file" -msgstr "" +msgstr "BIOS-fil" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS-fil (ROM #1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS-fil (ROM #2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS-fil (ROM #3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS-fil (ROM #4)" msgid "BIOS address" -msgstr "BIOS cím" +msgstr "BIOS-adresse" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS-adresse (ROM #1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS-adresse (ROM #2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS-adresse (ROM #3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS-adresse (ROM #4)" msgid "Enable BIOS extension ROM Writes" -msgstr "BIOS bővítés ROM írások engedélyezése" +msgstr "Aktiver skriving til BIOS-utvidelses-ROM" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Aktiver skriving til BIOS-utvidelses-ROM (ROM #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Aktiver skriving til BIOS-utvidelses-ROM (ROM #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Aktiver skriving til BIOS-utvidelses-ROM (ROM #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Aktiver skriving til BIOS-utvidelses-ROM (ROM #4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Grunnadresse for lineært framebuffer" msgid "Address" -msgstr "Cím:" +msgstr "Adresse" msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "Serieport-IRQ" msgid "Parallel port IRQ" -msgstr "" +msgstr "Parallellport-IRQ" msgid "BIOS Revision" -msgstr "BIOS felülvizsgálata" +msgstr "BIOS-revisjon" msgid "BIOS Version" -msgstr "" +msgstr "BIOS-versjon" msgid "BIOS Language" -msgstr "" +msgstr "BIOS-språk" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161-utvidelsesenhet" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM Kassett-Basic" msgid "Translate 26 -> 17" -msgstr "Fordítsd le 26 -> 17" +msgstr "Oversett 26 -> 17" msgid "Language" -msgstr "Nyelv" +msgstr "Språk" msgid "Enable backlight" -msgstr "Háttérvilágítás engedélyezése" +msgstr "Aktiver bakgrunnsbelysning" msgid "Invert colors" -msgstr "Invertált színek" +msgstr "Inverter farger" msgid "BIOS size" -msgstr "BIOS mérete" +msgstr "BIOS-størrelse" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOS-størrelse (ROM #1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOS-størrelse (ROM #2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOS-størrelse (ROM #3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOS-størrelse (ROM #4)" msgid "Map C0000-C7FFF as UMB" -msgstr "C0000-C7FFF mint UMB leképezése" +msgstr "Kartlegg C0000-C7FFF som UMB" msgid "Map C8000-CFFFF as UMB" -msgstr "C8000-CFFFF mint UMB leképezése" +msgstr "Kartlegg C8000-CFFFF som UMB" msgid "Map D0000-D7FFF as UMB" -msgstr "D0000-D7FFF mint UMB leképezése" +msgstr "Kartlegg D0000-D7FFF som UMB" msgid "Map D8000-DFFFF as UMB" -msgstr "D8000-DFFFF mint UMB leképezése" +msgstr "Kartlegg D8000-DFFFF som UMB" msgid "Map E0000-E7FFF as UMB" -msgstr "E0000-E7FFF mint UMB leképezése" +msgstr "Kartlegg E0000-E7FFF som UMB" msgid "Map E8000-EFFFF as UMB" -msgstr "E8000-EFFFF mint UMB leképezése" +msgstr "Kartlegg E8000-EFFFF som UMB" msgid "JS9 Jumper (JIM)" -msgstr "JS9 Jumper (JIM)" +msgstr "JS9-bygel (JIM)" msgid "MIDI Output Device" -msgstr "MIDI kimeneti eszköz" +msgstr "MIDI-utgangsenhet" msgid "MIDI Real time" -msgstr "MIDI valós időben" +msgstr "MIDI sanntid" msgid "MIDI Thru" -msgstr "A MIDI bemenet átmenete" +msgstr "MIDI gjennom" msgid "MIDI Clockout" -msgstr "A MIDI óra kimenete" +msgstr "MIDI-klokkeutgang" msgid "SoundFont" msgstr "SoundFont" msgid "Output Gain" -msgstr "Kimeneti erősítés" +msgstr "Utgangsforsterkning" msgid "Chorus" -msgstr "Kórus" +msgstr "Chorus" msgid "Chorus Voices" -msgstr "Kórus hangok" +msgstr "Chorus-stemmer" msgid "Chorus Level" -msgstr "Kórus szint" +msgstr "Chorus-nivå" msgid "Chorus Speed" -msgstr "Kórus sebesség" +msgstr "Chorus-hastighet" msgid "Chorus Depth" -msgstr "Kórus mélység" +msgstr "Chorus-dybde" msgid "Chorus Waveform" -msgstr "Kórus hullámforma" +msgstr "Chorus-bølgeform" msgid "Reverb" -msgstr "Visszhang" +msgstr "Reverb" msgid "Reverb Room Size" -msgstr "Visszhangterem mérete" +msgstr "Reverb-romstørrelse" msgid "Reverb Damping" -msgstr "Visszhang csillapítás" +msgstr "Reverb-demping" msgid "Reverb Width" -msgstr "Visszhang szélessége" +msgstr "Reverb-bredde" msgid "Reverb Level" -msgstr "Visszhang szint" +msgstr "Reverb-nivå" msgid "Interpolation Method" -msgstr "Interpolációs módszer" +msgstr "Interpolasjonsmetode" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dynamisk sample-lasting" msgid "Reverb Output Gain" -msgstr "Visszhang kimenetének erősítése" +msgstr "Reverb-utgangsforsterkning" msgid "Reversed stereo" -msgstr "Fordított sztereó" +msgstr "Omvendt stereo" msgid "Nice ramp" -msgstr "Szép rámpa" +msgstr "Myk overgang" msgid "Hz" msgstr "Hz" msgid "Buttons" -msgstr "Gombok" +msgstr "Knapper" msgid "Serial Port" -msgstr "Soros port" +msgstr "Serieport" msgid "RTS toggle" -msgstr "RTS kapcsoló" +msgstr "RTS-veksling" msgid "Revision" -msgstr "Felülvizsgálat" +msgstr "Revisjon" msgid "Controller" -msgstr "Vezérlő" +msgstr "Kontroller" msgid "Show Crosshair" -msgstr "Keresztmetszet megjelenítése" +msgstr "Vis siktekorn" msgid "DMA" msgstr "DMA" msgid "MAC Address" -msgstr "MAC cím" +msgstr "MAC-adresse" msgid "MAC Address OUI" -msgstr "MAC cím OUI" +msgstr "MAC-adresse OUI" msgid "Enable BIOS" -msgstr "BIOS engedélyezése" +msgstr "Aktiver BIOS" msgid "Baud Rate" -msgstr "Baud-ráta" +msgstr "Baudrate" msgid "TCP/IP listening port" -msgstr "TCP/IP figyelő port" +msgstr "TCP/IP-lytteport" msgid "Phonebook File" -msgstr "Telefonkönyv fájl" +msgstr "Telefonbokfil" msgid "Telnet emulation" -msgstr "Telnet emuláció" +msgstr "Telnet-emulering" msgid "RAM Address" -msgstr "RAM cím" +msgstr "RAM-adresse" msgid "RAM size" -msgstr "RAM mérete" +msgstr "RAM-størrelse" msgid "Initial RAM size" -msgstr "RAM kezdeti mérete" +msgstr "Opprinnelig RAM-størrelse" msgid "Serial Number" -msgstr "Sorszám" +msgstr "Serienummer" msgid "Host ID" -msgstr "Host azonosító" +msgstr "Vert-ID" msgid "FDC Address" -msgstr "FDC cím" +msgstr "FDC-adresse" msgid "MPU-401 Address" -msgstr "MPU-401 cím" +msgstr "MPU-401-adresse" msgid "MPU-401 IRQ" -msgstr "MPU-401 IRQ" +msgstr "MPU-401-IRQ" msgid "Receive MIDI input" -msgstr "MIDI bemenet fogadása" +msgstr "Motta MIDI-inngang" msgid "Low DMA" -msgstr "Alacsony DMA" +msgstr "Lav DMA" msgid "Enable Game port" -msgstr "Játékport engedélyezése" +msgstr "Aktiver spillport" msgid "SID Model" -msgstr "" +msgstr "SID-modell" msgid "SID Filter Strength" -msgstr "" +msgstr "SID-filterstyrke" msgid "Surround module" -msgstr "Surround modul" +msgstr "Surround-modul" msgid "CODEC" -msgstr "CODEC" +msgstr "Kodek" msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" -msgstr "CODEC megszakítás felemelése CODEC beállításakor (néhány illesztőprogramnak szükséges)" +msgstr "Generer kodek-avbrudd ved kodek-oppsett (nødvendig for noen drivere)" msgid "SB Address" -msgstr "SB cím" +msgstr "SB-adresse" msgid "Adlib Address" -msgstr "" +msgstr "Adlib-adresse" msgid "Use EEPROM setting" -msgstr "" +msgstr "Bruk EEPROM-innstilling" msgid "WSS IRQ" -msgstr "WSS IRQ" +msgstr "WSS-IRQ" msgid "WSS DMA" -msgstr "WSS DMA" +msgstr "WSS-DMA" msgid "Enable OPL" -msgstr "OPL engedélyezése" +msgstr "Aktiver OPL" msgid "Receive MIDI input (MPU-401)" -msgstr "MIDI bemenet fogadása (MPU-401)" +msgstr "Motta MIDI-inngang (MPU-401)" msgid "SB low DMA" -msgstr "SB alacsony DMA" +msgstr "SB lav DMA" msgid "6CH variant (6-channel)" -msgstr "6CH változat (6 csatornás)" +msgstr "6CH-variant (6-kanals)" msgid "Enable CMS" -msgstr "CMS engedélyezése" +msgstr "Aktiver CMS" msgid "Mixer" -msgstr "Keverő" +msgstr "Mikser" msgid "High DMA" -msgstr "Magas DMA" +msgstr "Høy DMA" msgid "Control PC speaker" -msgstr "Control PC hangszóró" +msgstr "Kontroller PC-høyttaler" msgid "Memory size" -msgstr "Memória mérete" +msgstr "Minnestørrelse" msgid "EMU8000 Address" -msgstr "EMU8000 cím" +msgstr "EMU8000-adresse" msgid "IDE Controller" -msgstr "IDE vezérlő" +msgstr "IDE-kontroller" msgid "Codec" -msgstr "Codec" +msgstr "Kodek" msgid "GUS type" -msgstr "GUS típus" +msgstr "GUS-type" msgid "Enable 0x04 \"Exit 86Box\" command" -msgstr "A 0x04 parancs engedélyezése \"Lépni a 86Box-ból\"" +msgstr "Aktiver 0x04-kommandoen \"Avslutt 86Box\"" msgid "Display type" -msgstr "Megjelenítés típusa" +msgstr "Skjermtype" msgid "Composite type" -msgstr "Összetett típus" +msgstr "Kompositt-type" msgid "RGB type" -msgstr "RGB típus" +msgstr "RGB-type" msgid "Line doubling type" -msgstr "Vonal megduplázásának típusa" +msgstr "Linjefordoblingstype" msgid "Snow emulation" -msgstr "Hó emulációja" +msgstr "Snøeffekt-emulering" msgid "Monitor type" -msgstr "Monitor típusa" +msgstr "Skjermtype" msgid "Character set" -msgstr "Karakterkészlet" +msgstr "Tegnsett" msgid "XGA type" -msgstr "XGA típus" +msgstr "XGA-type" msgid "Instance" -msgstr "Példa" +msgstr "Forekomst" msgid "MMIO Address" -msgstr "MMIO cím" +msgstr "MMIO-adresse" msgid "RAMDAC type" -msgstr "RAMDAC típus" +msgstr "RAMDAC-type" msgid "Blend" -msgstr "Blend" +msgstr "Blanding" msgid "Font" -msgstr "" +msgstr "Skrifttype" msgid "Bilinear filtering" -msgstr "Bilineáris szűrés" +msgstr "Bilineær filtrering" msgid "Video chroma-keying" -msgstr "" +msgstr "Video chroma-key" msgid "Dithering" msgstr "Dithering" msgid "Enable NMI for CGA emulation" -msgstr "NMI engedélyezése a CGA emulációhoz" +msgstr "Aktiver NMI for CGA-emulering" msgid "Voodoo type" -msgstr "Voodoo típus" +msgstr "Voodoo-type" msgid "Framebuffer memory size" -msgstr "A keretpuffer memória mérete" +msgstr "Framebuffer-minnestørrelse" msgid "Texture memory size" -msgstr "Textúra memória mérete" +msgstr "Teksturminnestørrelse" msgid "Dither subtraction" -msgstr "Dither kivonás" +msgstr "Dither-subtraksjon" msgid "Screen Filter" -msgstr "Szűrő szűrő" +msgstr "Skjermfilter" msgid "Render threads" -msgstr "Renderelési szálak" +msgstr "Render-tråder" msgid "SLI" msgstr "SLI" msgid "Start Address" -msgstr "Kezdeti cím" +msgstr "Startadresse" msgid "Contiguous Size" -msgstr "Összefüggő méret" +msgstr "Sammenhengende størrelse" msgid "I/O Width" -msgstr "I/O szélesség" +msgstr "I/U-bredde" msgid "Transfer Speed" -msgstr "Átviteli sebesség" +msgstr "Overføringshastighet" msgid "EMS mode" -msgstr "EMS üzemmód" +msgstr "EMS-modus" msgid "EMS Address" -msgstr "" +msgstr "EMS-adresse" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1-adresse" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2-adresse" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS-minnestørrelse" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1-minnestørrelse" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2-minnestørrelse" msgid "Enable EMS" -msgstr "" +msgstr "Aktiver EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Aktiver EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Aktiver EMS 2" msgid "Address for > 2 MB" -msgstr "Cím > 2 MB" +msgstr "Adresse for > 2 MB" msgid "Frame Address" -msgstr "Keret címe" +msgstr "Rammeadresse" msgid "USA" msgstr "USA" msgid "Danish" -msgstr "Dán" +msgstr "Dansk" msgid "Always at selected speed" -msgstr "Mindig a kiválasztott sebességen" +msgstr "Alltid på valgt hastighet" msgid "BIOS setting + Hotkeys (off during POST)" -msgstr "BIOS beállítás + gyorsbillentyűk (kikapcsolva POST alatt)" +msgstr "BIOS-innstilling + hurtigtaster (av under POST)" msgid "64 KB starting from F0000" -msgstr "64 KB F0000-től kezdődően" +msgstr "64 KB fra F0000" msgid "128 KB starting from E0000 (address MSB inverted, last 64 KB first)" -msgstr "128 KB E0000-től kezdődően (cím MSB invertálva, először az utolsó 64 KB)" +msgstr "128 KB fra E0000 (adresse-MSB invertert, siste 64 KB først)" msgid "Sine" -msgstr "Szinuszos" +msgstr "Sinus" msgid "Triangle" -msgstr "Háromszög" +msgstr "Trekant" msgid "Linear" -msgstr "Lineáris" +msgstr "Lineær" msgid "4th Order" -msgstr "4. rendű" +msgstr "4. orden" msgid "7th Order" -msgstr "7. rendű" +msgstr "7. orden" msgid "Non-timed (original)" -msgstr "Időzítő nélkül (eredeti)" +msgstr "Ikke-timet (original)" msgid "45 Hz (JMP2 not populated)" -msgstr "45 Hz (nincs jumper a JMP2-nél)" +msgstr "45 Hz (JMP2 ikke koblet)" msgid "Two" -msgstr "Két" +msgstr "To" msgid "Three" -msgstr "Három" +msgstr "Tre" msgid "Wheel" -msgstr "Kerék" +msgstr "Hjul" msgid "Five + Wheel" -msgstr "Öt + kerék" +msgstr "Fem + hjul" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Fem + 2 hjul" msgid "A3 - SMT2 Serial / SMT3(R)V" -msgstr "A3 - SMT2 soros / SMT3(R)V" +msgstr "A3 - SMT2-seriell / SMT3(R)V" msgid "Q1 - SMT3(R) Serial" -msgstr "Q1 - SMT3(R) soros" +msgstr "Q1 - SMT3(R)-seriell" msgid "8 KB" msgstr "8 KB" @@ -2398,7 +2401,7 @@ msgid "64 KB" msgstr "64 KB" msgid "Disable BIOS" -msgstr "BIOS letiltása" +msgstr "Deaktiver BIOS" msgid "512 KB" msgstr "512 KB" @@ -2431,484 +2434,523 @@ msgid "24 MB" msgstr "24 MB" msgid "SigmaTel STAC9721T (stereo)" -msgstr "SigmaTel STAC9721T (sztereó)" +msgstr "SigmaTel STAC9721T (stereo)" msgid "Classic" -msgstr "Klasszikus" +msgstr "Klassisk" msgid "256 KB" msgstr "256 KB" msgid "Composite" -msgstr "Összetett" +msgstr "Kompositt" + +msgid "True color" +msgstr "Ekte farger" msgid "Old" -msgstr "Régi" +msgstr "Gammel" msgid "New" -msgstr "Új" +msgstr "Ny" msgid "Color (generic)" -msgstr "Szín (általános)" +msgstr "Farge (generisk)" msgid "Green Monochrome" -msgstr "Zöld monokróm" +msgstr "Grønn monokrom" msgid "Amber Monochrome" -msgstr "Sárga monokróm" +msgstr "Ravgul monokrom" msgid "Gray Monochrome" -msgstr "Szürke monokróm" +msgstr "Grå monokrom" msgid "Color (no brown)" -msgstr "Szín (nem barna)" +msgstr "Farge (ingen brun)" msgid "Color (IBM 5153)" -msgstr "Színes (IBM 5153)" +msgstr "Farge (IBM 5153)" msgid "Simple doubling" -msgstr "Egyszerű duplázás" +msgstr "Enkel dobling" msgid "sRGB interpolation" -msgstr "sRGB interpoláció" +msgstr "sRGB-interpolering" msgid "Linear interpolation" -msgstr "Lineáris interpoláció" +msgstr "Lineær interpolering" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Har sekundært 8x8-tegnsett" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Har Quadcolor II-datterkort" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternativ monokrom kontrast" msgid "128 KB" msgstr "128 KB" msgid "Monochrome (5151/MDA) (white)" -msgstr "Monokróm (5151/MDA) (fehér)" +msgstr "Monokrom (5151/MDA) (hvit)" msgid "Monochrome (5151/MDA) (green)" -msgstr "Monokróm (5151/MDA) (zöld)" +msgstr "Monokrom (5151/MDA) (grønn)" msgid "Monochrome (5151/MDA) (amber)" -msgstr "Monokróm (5151/MDA) (sárga)" +msgstr "Monokrom (5151/MDA) (ravgul)" msgid "Color 40x25 (5153/CGA)" -msgstr "Színes 40x25 (5153/CGA)" +msgstr "Farge 40x25 (5153/CGA)" msgid "Color 80x25 (5153/CGA)" -msgstr "Színes 80x25 (5153/CGA)" +msgstr "Farge 80x25 (5153/CGA)" msgid "Enhanced Color - Normal Mode (5154/ECD)" -msgstr "Fokozott szín - normál üzemmód (5154/ECD)" +msgstr "Forbedret farge – normalmodus (5154/ECD)" msgid "Enhanced Color - Enhanced Mode (5154/ECD)" -msgstr "Továbbfejlesztett szín - továbbfejlesztett üzemmód (5154/ECD)" +msgstr "Forbedret farge – forbedret modus (5154/ECD)" msgid "Green" -msgstr "Zöld" +msgstr "Grønn" msgid "Amber" -msgstr "Sárga" +msgstr "Ravgul" msgid "Gray" -msgstr "Szürke" +msgstr "Grå" msgid "Grayscale" -msgstr "" +msgstr "Gråtoner" msgid "Color" -msgstr "Színes" +msgstr "Farge" msgid "U.S. English" -msgstr "Amerikai angol" +msgstr "Amerikansk engelsk" msgid "Scandinavian" -msgstr "Skandináv" +msgstr "Skandinavisk" msgid "Other languages" -msgstr "Egyéb nyelvek" +msgstr "Andre språk" msgid "Bochs latest" -msgstr "Bochs legújabb" +msgstr "Bochs nyeste" msgid "Apply overscan deltas" -msgstr "" +msgstr "Bruk overskann-endringer" msgid "Mono Interlaced" -msgstr "" +msgstr "Mono-flettet" msgid "Mono Non-Interlaced" -msgstr "Monokróm nem átlapolt" +msgstr "Mono-ikke-flettet" msgid "Color Interlaced" -msgstr "Színes átlapolt" +msgstr "Farge-flettet" msgid "Color Non-Interlaced" -msgstr "Színes nem átlapolt" +msgstr "Farge-ikke-flettet" msgid "3Dfx Voodoo Graphics" -msgstr "3dfx Voodoo-gyorsítókártya" +msgstr "3Dfx Voodoo-grafikk" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" -msgstr "Obsidian SB50 + Amethyst (2 TMU)" +msgstr "Obsidian SB50 + Amethyst (2 TMU-er)" msgid "8-bit" -msgstr "8 bites" +msgstr "8-bit" msgid "16-bit" -msgstr "16 bites" +msgstr "16-bit" msgid "Standard (150ns)" -msgstr "Standard (150ns)" +msgstr "Standard (150 ns)" msgid "High-Speed (120ns)" -msgstr "Nagy sebességű (120ns)" +msgstr "Høyhastighet (120 ns)" msgid "Enabled" -msgstr "Engedélyezve" +msgstr "Aktivert" msgid "Standard" msgstr "Standard" msgid "High-Speed" -msgstr "Nagy sebességű" +msgstr "Høyhastighet" msgid "Stereo LPT DAC" -msgstr "Sztereó LPT DAC" +msgstr "Stereo LPT-DAC" msgid "Generic Text Printer" -msgstr "Általános szövegnyomtató" +msgstr "Generisk tekstskriver" msgid "Generic ESC/P Dot-Matrix Printer" -msgstr "Általános ESC/P pontmátrixnyomtató" +msgstr "Generisk ESC/P-matriseskriver" msgid "Generic PostScript Printer" -msgstr "Általános PostScript nyomtató" +msgstr "Generisk PostScript-skriver" msgid "Generic PCL5e Printer" -msgstr "Általános PCL5e nyomtató" +msgstr "Generisk PCL5e-skriver" msgid "Parallel Line Internet Protocol" -msgstr "Párhuzamos vonalas internetprotokoll" +msgstr "Parallell linje-internettprotokoll" msgid "Protection Dongle for Savage Quest" -msgstr "Védelmi dongle a Savage Questhez" +msgstr "Beskyttelsesdongle for Savage Quest" msgid "Serial Passthrough Device" -msgstr "Soros port áthaladó eszköz" +msgstr "Seriell gjennomkoblingsenhet" msgid "Passthrough Mode" -msgstr "Áthaladó mód" +msgstr "Gjennomkoblingsmodus" msgid "Host Serial Device" -msgstr "Host soros eszköz" +msgstr "Verts-seriellenhet" msgid "Name of pipe" -msgstr "A cső neve" +msgstr "Navn på pipe" msgid "Data bits" -msgstr "Adat bitek" +msgstr "Databiter" msgid "Stop bits" -msgstr "Stop bitek" +msgstr "Stoppbiter" msgid "Baud Rate of Passthrough" -msgstr "Az átmenő átviteli sebesség Baud-rátája" +msgstr "Baudrate for gjennomkobling" msgid "Named Pipe (Server)" -msgstr "Megnevezett cső (kiszolgáló)" +msgstr "Navngitt pipe (server)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Navngitt pipe (klient)" msgid "Host Serial Passthrough" -msgstr "Az állomás soros portjának áthaladása" +msgstr "Verts-seriell gjennomkobling" msgid "E&ject %1" -msgstr "%1 &kiadás" +msgstr "M&at ut %1" msgid "&Unmute" -msgstr "&Hang újra bekapcsolása" +msgstr "&Slå på lyd" msgid "Softfloat FPU" msgstr "Softfloat FPU" msgid "High performance impact" -msgstr "Nagy hatással van a teljesítményre" +msgstr "Høy ytelsespåvirkning" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] RAM lemez (max. sebesség)" +msgstr "[Generisk] RAM-disk (maks hastighet)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Generisk] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Generisk] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Generisk] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Generisk] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Generisk] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Generisk] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Generisk] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" -msgstr "IBM 8514/A klón (ISA)" +msgstr "IBM 8514/A-klone (ISA)" msgid "Vendor" -msgstr "Gyártó" +msgstr "Leverandør" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" -msgstr "Általános PC/XT memóriabővítők" +msgstr "Generisk PC/XT-minneutvidelse" msgid "Generic PC/AT Memory Expansion" -msgstr "Általános PC/AT memóriabővítők" +msgstr "Generisk PC/AT-minneutvidelse" msgid "Unable to find Dot-Matrix fonts" -msgstr "Nem találja a Dot-Matrix betűtípusokat" +msgstr "Kan ikke finne matriseskriver-fonter" msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer." -msgstr "Az általános ESC/P pontmátrixnyomtató emulációjához a \"roms/printer/fonts\" könyvtárban található TrueType betűtípusok szükségesek." +msgstr "TrueType-fonter i mappen \"roms/printer/fonts\" kreves for emulering av generisk ESC/P-matriseskriver." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Deaktiver multimedietaster" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Be om bekreftelse før innstillingene lagres" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Be om bekreftelse før hard reset" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Be om bekreftelse før avslutning" msgid "Options" -msgstr "" +msgstr "Alternativer" msgid "Model" -msgstr "" +msgstr "Modell" msgid "Model:" -msgstr "" +msgstr "Modell:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Kunne ikke initialisere Vulkan-gjengiver." msgid "GLSL Error" -msgstr "" +msgstr "GLSL-feil" msgid "Could not load shader: %1" -msgstr "" +msgstr "Kunne ikke laste shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "OpenGL versjon 3.0 eller høyere kreves. Nåværende GLSL-versjon er %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Kunne ikke laste tekstur: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Kunne ikke kompilere shader:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Program ikke koblet:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Shader-håndtering" msgid "Shader Configuration" -msgstr "" +msgstr "Shader-konfigurasjon" msgid "Add" -msgstr "" +msgstr "Legg til" msgid "Move up" -msgstr "" +msgstr "Flytt opp" msgid "Move down" -msgstr "" +msgstr "Flytt ned" msgid "Could not load file %1" -msgstr "" +msgstr "Kunne ikke laste fil %1" msgid "Key Bindings:" -msgstr "" +msgstr "Tastebindinger:" msgid "Action" -msgstr "" +msgstr "Handling" msgid "Keybind" -msgstr "" +msgstr "Tastebinding" msgid "Clear binding" -msgstr "" +msgstr "Fjern binding" msgid "Bind" -msgstr "" +msgstr "Bind" msgid "Bind Key" -msgstr "" +msgstr "Bind tast" msgid "Enter key combo:" -msgstr "" +msgstr "Skriv inn tastekombinasjon:" msgid "Bind conflict" -msgstr "" +msgstr "Bindingkonflikt" msgid "This key combo is already in use." -msgstr "" +msgstr "Denne tastekombinasjonen er allerede i bruk." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Send Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Send Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Veksle fullskjerm" msgid "Screenshot" -msgstr "" +msgstr "Skjermbilde" msgid "Release mouse pointer" -msgstr "" +msgstr "Frigi musepeker" msgid "Toggle pause" -msgstr "" +msgstr "Veksle pause" msgid "Toggle mute" -msgstr "" +msgstr "Veksle lyd av/på" msgid "Text files" -msgstr "" +msgstr "Tekstfiler" msgid "ROM files" -msgstr "" +msgstr "ROM-filer" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont-filer" msgid "Local Switch" -msgstr "" +msgstr "Lokal svitsj" msgid "Remote Switch" -msgstr "" +msgstr "Ekstern svitsj" msgid "Switch:" -msgstr "" +msgstr "Svitsj:" msgid "Hub Mode" -msgstr "" +msgstr "Hub-modus" msgid "Hostname:" -msgstr "" +msgstr "Vertsnavn:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA-RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA-ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Tøm NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Dette vil slette all NVRAM (og relaterte) filer for den virtuelle maskinen som ligger i undermappen «nvr». Du må konfigurere BIOS (og eventuelt andre enheter i VM-en) på nytt om nødvendig.\n\nEr du sikker på at du vil tømme alt innhold i NVRAM for den virtuelle maskinen «%1»?" msgid "Success" -msgstr "" +msgstr "Vellykket" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Tømming av NVRAM-innholdet for den virtuelle maskinen «%1» var vellykket" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "En feil oppstod under tømming av NVRAM-innholdet for den virtuelle maskinen «%1»" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 VM-håndtering" msgid "%n disk(s)" -msgstr "" +msgstr "%n disk(er)" msgid "Unknown Status" -msgstr "" +msgstr "Ukjent status" msgid "No Machines Found!" -msgstr "" +msgstr "Ingen maskiner funnet!" msgid "Check for updates on startup" -msgstr "" +msgstr "Se etter oppdateringer ved oppstart" msgid "Unable to determine release information" -msgstr "" +msgstr "Kunne ikke fastslå versjonsinformasjon" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Det oppstod en feil ved søk etter oppdateringer:\n\n%1\n\nPrøv igjen senere." msgid "Update check complete" -msgstr "" +msgstr "Oppdateringssjekk fullført" + +msgid "stable" +msgstr "stabil" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Du kjører den nyeste %1-versjonen av 86Box: %2" msgid "version" -msgstr "" +msgstr "versjon" msgid "build" -msgstr "" +msgstr "bygg" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Du kjører for øyeblikket versjon %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Versjon %1 er nå tilgjengelig." + +msgid "You are currently running build %1." +msgstr "Du kjører for øyeblikket bygg %1." + +msgid "Build %1 is now available." +msgstr "Bygg %1 er nå tilgjengelig." + +msgid "Would you like to visit the download page?" +msgstr "Vil du besøke nedlastingssiden?" msgid "Visit download page" -msgstr "" +msgstr "Besøk nedlastingssiden" msgid "Update check" -msgstr "" +msgstr "Oppdateringssjekk" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Ser etter oppdateringer..." msgid "86Box Update" -msgstr "" +msgstr "86Box-oppdatering" msgid "Release notes:" -msgstr "" +msgstr "Versjonsnotater:" -#~ msgid "HD Controller:" -#~ msgstr "Merevl.-vezérlő:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP-meghajtók:" +msgid "Virtual machine crash" +msgstr "Virtuell maskin krasjet" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Prosessen til den virtuelle maskinen «%1» ble uventet avsluttet med avslutningskode %2." -#~ msgid "ZIP images" -#~ msgstr "ZIP-lemezképek" +msgid "The system will not be added." +msgstr "Systemet vil ikke bli lagt til." + +msgid "&Update mouse every CPU frame" +msgstr "&Oppdater musen for hver CPU-ramme" + +msgid "Hue" +msgstr "Fargetone" + +msgid "Saturation" +msgstr "Metning" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Lysstyrke" + +msgid "Sharpness" +msgstr "Skarphet" + +msgid "&CGA composite settings..." +msgstr "&CGA-komposittinnstillinger..." + +msgid "CGA composite settings" +msgstr "CGA-komposittinnstillinger" diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po index b24895bf2..6408cf21c 100644 --- a/src/qt/languages/nl-NL.po +++ b/src/qt/languages/nl-NL.po @@ -28,7 +28,7 @@ msgid "&Pause" msgstr "&Pauze" msgid "Pause" -msgstr "" +msgstr "Pauze" msgid "Re&sume" msgstr "He&rvatten" @@ -57,9 +57,6 @@ msgstr "Re&nderer" msgid "&Qt (Software)" msgstr "&Qt (software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "Afmetingen opgeven..." -msgid "F&orce 4:3 display ratio" -msgstr "F&orceer 4:3 beeldverhouding" +msgid "Force &4:3 display ratio" +msgstr "Forceer &4:3 beeldverhouding" msgid "&Window scale factor" msgstr "&Venster schaalfactor" @@ -138,8 +135,8 @@ msgstr "&Integerschaal" msgid "4:&3 Integer scale" msgstr "4:&3 integerschaal" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGA-instellingen" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGA-instellingen" msgid "&Inverted VGA monitor" msgstr "Ge&ïnverteerde VGA-monitor" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Instellingen..." msgid "Settings..." -msgstr "" +msgstr "Instellingen..." msgid "&Update status bar icons" msgstr "&Statusbalkpictogrammen bijwerken" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Configureren" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "CPU type:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA Graphics" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 Display Adapter Graphics" msgid "Keyboard:" msgstr "Toetsenbord" msgid "Keyboard" -msgstr "" +msgstr "Toetsenbord" msgid "Mouse:" msgstr "Muis:" msgid "Mouse" -msgstr "" +msgstr "Muis" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI In-apparaat:" msgid "MIDI Out:" -msgstr "" +msgstr "Midi Out:" msgid "Standalone MPU-401" msgstr "Standalone MPU-401" @@ -519,6 +516,9 @@ msgstr "LPT3-apparaat:" msgid "LPT4 Device:" msgstr "LPT4-apparaat:" +msgid "Internal LPT ECP DMA:" +msgstr "Interne LPT ECP DMA:" + msgid "Serial port 1" msgstr "Seriële poort 1" @@ -640,10 +640,10 @@ msgid "MO drives:" msgstr "MO-schijven:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Verwisselbare schijven:" msgid "Removable disk drives:" msgstr "Verwisselbare schijfstations" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Poorten (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Poorten" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Seriële poorten:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Parallelle poorten:" msgid "Storage controllers" msgstr "Opslagcontrollers" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Harde schijven" msgid "Disks:" -msgstr "" +msgstr "Schijven:" msgid "Floppy:" -msgstr "" +msgstr "Floppy:" msgid "Controllers:" -msgstr "" +msgstr "Controllers:" msgid "Floppy & CD-ROM drives" msgstr "Floppy- en CD-ROM-stations" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Andere randapparatuur" msgid "Other devices" -msgstr "" +msgstr "Andere apparaten" msgid "Click to capture mouse" msgstr "Klik om muis vast te leggen" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Intern apparaat" msgid "&File" -msgstr "" +msgstr "&Bestand" msgid "&New machine..." -msgstr "" +msgstr "&Nieuwe machine..." msgid "&Check for updates..." -msgstr "" +msgstr "&Controleren op updates..." msgid "Exit" msgstr "&Afsluiten" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pauze executie" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Druk op Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Harde reset" msgid "Force shutdown" -msgstr "" +msgstr "Forceer afsluiten" msgid "Start" -msgstr "" +msgstr "Start" msgid "Not running" -msgstr "" +msgstr "Niet actied" msgid "Running" -msgstr "" +msgstr "Actief" msgid "Paused" -msgstr "" +msgstr "Gepauzeerd" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "aan het wachtend" msgid "Powered Off" -msgstr "" +msgstr "Sluit af" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n actief" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n gepauzeerd" + +msgid "%n waiting" +msgstr "%n aan het wachten" + +msgid "%1 total" +msgstr "%1 totaal" + +msgid "VMs: %1" +msgstr "VMs: %1" msgid "System Directory:" -msgstr "" +msgstr "Systeemmap:" msgid "Choose directory" -msgstr "" +msgstr "Kies map" msgid "Choose configuration file" -msgstr "" +msgstr "Kies configuratiebestand" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box configuratiebestanden (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Lezen configuratie mislukt" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Openen van geselecteerd configuratiebestand voor lezen niet mogelijk: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Gebruik reguliere expressies in zoekveld" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 machine(s) zijn nu actief. Weet je zeker dat je de VM manager wil afsluiten?" msgid "Add new system wizard" -msgstr "" +msgstr "Assistent voor toevoegen van nieuw systeem" msgid "Introduction" -msgstr "" +msgstr "Introductie" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Dit helpt je een nieuw systeem toe te voegen aan 86Box." msgid "New configuration" -msgstr "" +msgstr "Nieuwe configuratie" msgid "Complete" -msgstr "" +msgstr "Compleet" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "De assistent zal nu de configuratie van het nieuwe systeem starten." msgid "Use existing configuration" -msgstr "" +msgstr "Gebruik bestaande configuratie" msgid "Type some notes here" -msgstr "" +msgstr "Ruimte voor notities" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Plak de inhoud van het bestaande configuratiebestand in het vak hieronder." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Laad configuratie van bestand" msgid "System name" -msgstr "" +msgstr "Systeemnaam" msgid "System name:" -msgstr "" +msgstr "Systeemnaam:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Systeemnaam mag bepaalde tekens niet bevatten" msgid "System name already exists" -msgstr "" +msgstr "Systeemnaam bestaat al" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Geef een map op voor het systeem" msgid "Directory does not exist" -msgstr "" +msgstr "Map bestaat niet" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Een nieuwe map voor het systeem wordt aangemaakt in de boven geselecteerde map" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Systeemlocatie:" msgid "System name and location" -msgstr "" +msgstr "Systeemnaam en -locatie" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Voer de naam in van het systeem en kies een locatie" msgid "Enter the name of the system" -msgstr "" +msgstr "Voer de naam in van het systeem" msgid "Please enter a system name" -msgstr "" +msgstr "Voer een naam in van het systeem" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Weergavenaam (optioneel):" msgid "Display name:" -msgstr "" +msgstr "Weergavenaam:" msgid "Set display name" -msgstr "" +msgstr "Weergavenaam instellen" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Voer een nieuwe weergavenaam in (laat leeg om te herstellen)" msgid "Change &display name..." -msgstr "" +msgstr "Pas &weergavenaam aan..." msgid "Context Menu" -msgstr "" +msgstr "Contextmenu" msgid "&Open folder..." -msgstr "" +msgstr "&Open map..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Open &papierlade..." msgid "Set &icon..." -msgstr "" +msgstr "Stel &icoon in..." msgid "Select an icon" -msgstr "" +msgstr "Selecteer een icoon" msgid "C&lone..." -msgstr "" +msgstr "K&lonen..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuele machine \"%1\" (%2) zal gekloond worden naar:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Map %1 bestaat al" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "De volgende tekens mogen niet gebruikt worden in de naam: %1" msgid "Clone" -msgstr "" +msgstr "Klonen" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Map aanmaken voor gekloonde VM mislukt" msgid "Failed to clone VM." -msgstr "" +msgstr "Kolen van VM mislukt." msgid "Directory in use" -msgstr "" +msgstr "Map in gebruik" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "De geselecteerde map is al in gebruik. Selecteer een andere map." msgid "Create directory failed" -msgstr "" +msgstr "Map aanmaken mislukt" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Map aanmaken voor het nieuwe systeem niet mogelijk" msgid "Configuration write failed" -msgstr "" +msgstr "Wegschrijven configuratie mislukt" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Openen van configuratiebestand %1 voor wegschrijven niet mogelijk" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Fout bij toevoegen van systeem" msgid "Remove directory failed" -msgstr "" +msgstr "Verwijderen map mislukt" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Enkele bestanden in de machinemap konden niet verwijderd worden. Verwijder deze handmatig." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Versie" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Een update van 86Box is beschikbaar: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Er is een fout opgetreden tijdens het controleren op updates: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr " Een update van 86Box is beschikbaar!" msgid "Warning" -msgstr "" +msgstr "Waarschuwing" msgid "&Kill" -msgstr "" +msgstr "&Gedwongen beëindigen" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Gedwongen beëindiging van een virtuele machine kan dataverlies veroorzaken. Doe dit alleen wanneer het 86Box process is vast gelopen.\n\nWeet je zeker dat je de virtuele machine \"%1\" wil beëindigen?" msgid "&Delete" -msgstr "" +msgstr "&Verwijderen" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Weet je zeker dat je de virtuele machine \"%1\" en al haar bestanden wil verwijderen? Deze actie kan niet ongedaan gemaakt worden!" msgid "Show &config file" -msgstr "" +msgstr "Toon &configuratiebestand" msgid "No screenshot" -msgstr "" +msgstr "Geen schermafbeelding" msgid "Search" -msgstr "" +msgstr "Zoeken" msgid "Searching for VMs..." -msgstr "" +msgstr "Zoeken naar VMs..." msgid "Found %1" -msgstr "" +msgstr "Gevonden %1" msgid "System" -msgstr "" +msgstr "Systeem" msgid "Storage" -msgstr "" +msgstr "Opslag" msgid "Disk %1: " -msgstr "" +msgstr "Schijf %1: " msgid "No disks" -msgstr "" +msgstr "Geen schijven" msgid "Audio" -msgstr "" +msgstr "Audio" msgid "Audio:" -msgstr "" +msgstr "Audio:" msgid "ACPI shutdown" msgstr "ACPI uitschakeling" @@ -1626,9 +1632,6 @@ msgstr "Lijst van MCA-apparaten:" msgid "&Tablet tool" msgstr "Tablet-hulpmiddel" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Over &Qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Null Driver" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Netwerkkaart #1" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Composite" +msgid "True color" +msgstr "Echte kleur" + msgid "Old" msgstr "Oud" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo Graphics" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU's)" @@ -2823,92 +2829,128 @@ msgstr "Hub-modus" msgid "Hostname:" msgstr "Hostname" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "NVRAM &wissen" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Dit verwijdert alle NVRAM-bestanden (en gerelateerde bestanden) van de virtuele machine die zich in de submap \"nvr\" bevinden. Je zult de BIOS-instellingen (en mogelijk ook andere apparaten in de VM) opnieuw moeten configureren indien van toepassing.\n\nWeet je zeker dat je alle NVRAM-gegevens van de virtuele machine \"%1\" wilt wissen?" msgid "Success" -msgstr "" +msgstr "Succes" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Wissen van NVRAM-inhoud van de virtuele machine \"%1\" geslaagd" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Fout bij Wissen van NVRAM-inhoud van de virtuele machine \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 VM Manager" msgid "%n disk(s)" -msgstr "" +msgstr "%n schijf(en)" msgid "Unknown Status" -msgstr "" +msgstr "Onbekende Status" msgid "No Machines Found!" -msgstr "" +msgstr "Geen Machines Gevonden!" msgid "Check for updates on startup" -msgstr "" +msgstr "Controleer op updates bij start" msgid "Unable to determine release information" -msgstr "" +msgstr "Kan release-informatie niet bepalen" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Er is een fout opgetreden bij het controleren op updates:\n\n%1\n\nProbeer later opnieuw." msgid "Update check complete" -msgstr "" +msgstr "Controleren op updates voltooid" + +msgid "stable" +msgstr "stabiel" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Je gebruikt de nieuwste %1-versie van 86Box: %2" msgid "version" -msgstr "" +msgstr "versie" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Je gebruikt versie %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Versie %1 is nu beschikbaar." + +msgid "You are currently running build %1." +msgstr "Je gebruikt build %1." + +msgid "Build %1 is now available." +msgstr "Build %1 is nu beschikbaar." + +msgid "Would you like to visit the download page?" +msgstr "Wil je de downloadpagina bezoeken?" msgid "Visit download page" -msgstr "" +msgstr "Bezoek downloadpagina" msgid "Update check" -msgstr "" +msgstr "Updatecontrole" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Controleren op updates..." msgid "86Box Update" -msgstr "" +msgstr "86Box Update" msgid "Release notes:" -msgstr "" +msgstr "Release-opmerkingen:" -#~ msgid "HD Controller:" -#~ msgstr "HD-controller:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP-schijven:" +msgid "Virtual machine crash" +msgstr "Crash van virtuele machine" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Het proces van de virtuele machine \"%1\" is onverwacht beëindigd met exitcode %2." -#~ msgid "ZIP images" -#~ msgstr "ZIP-images" +msgid "The system will not be added." +msgstr "Het systeem wordt niet toegevoegd." + +msgid "&Update mouse every CPU frame" +msgstr "&Muis bijwerken bij elk CPU-frame" + +msgid "Hue" +msgstr "Kleurtoon" + +msgid "Saturation" +msgstr "Verzadiging" + +msgid "Contrast" +msgstr "Contrast" + +msgid "Brightness" +msgstr "Helderheid" + +msgid "Sharpness" +msgstr "Scherpte" + +msgid "&CGA composite settings..." +msgstr "Instellingen van de &CGA-compositemodus..." + +msgid "CGA composite settings" +msgstr "Instellingen van de CGA-compositemodus" diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po index 9e6cac667..8d722817a 100644 --- a/src/qt/languages/pl-PL.po +++ b/src/qt/languages/pl-PL.po @@ -28,7 +28,7 @@ msgid "&Pause" msgstr "&Pauza" msgid "Pause" -msgstr "" +msgstr "Pauza" msgid "Re&sume" msgstr "&Wznów" @@ -49,7 +49,7 @@ msgid "&Resizeable window" msgstr "&Okno o zmiennym rozmiarze" msgid "R&emember size && position" -msgstr "P&amiętaj rozmiar &i pozycję" +msgstr "P&amiętaj rozmiar i pozycję" msgid "Re&nderer" msgstr "Re&nderer" @@ -57,9 +57,6 @@ msgstr "Re&nderer" msgid "&Qt (Software)" msgstr "&Qt (programowy)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "Określ wymiary..." -msgid "F&orce 4:3 display ratio" -msgstr "&Wymuś proporcje wyświetlania 4:3" +msgid "Force &4:3 display ratio" +msgstr "Wymuś proporcje wyświetlania &4:3" msgid "&Window scale factor" msgstr "Współ&czynnik skalowania okna" @@ -138,8 +135,8 @@ msgstr "&Skalowanie całkowite" msgid "4:&3 Integer scale" msgstr "Skalowanie całkowite 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "Ustawienia E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Ustawienia EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Odwrócony monitor VGA" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Ustawienia..." msgid "Settings..." -msgstr "" +msgstr "Ustawienia..." msgid "&Update status bar icons" msgstr "&Aktualizuj ikony na pasku statusu" @@ -223,7 +220,7 @@ msgid "End trace" msgstr "Zakończ śledzenie" msgid "&Help" -msgstr "&Pomoc" +msgstr "Pomo&c" msgid "&Documentation..." msgstr "&Dokumentacja..." @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Konfiguruj" msgid "CPU:" -msgstr "" +msgstr "Procesor:" msgid "CPU type:" msgstr "Rodzaj procesora:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Grafika XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Karta graficzna IBM PS/55" msgid "Keyboard:" msgstr "Klawiatura:" msgid "Keyboard" -msgstr "" +msgstr "Klawiatura" msgid "Mouse:" msgstr "Mysz:" msgid "Mouse" -msgstr "" +msgstr "Mysz" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Urządzenie wejściowe MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Wyjście MIDI:" msgid "Standalone MPU-401" msgstr "Samodzielne urządzenie MPU-401" @@ -519,6 +516,9 @@ msgstr "Urządzenie LPT3:" msgid "LPT4 Device:" msgstr "Urządzenie LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "Wewnętrzne DMA LPT ECP:" + msgid "Serial port 1" msgstr "Port szeregowy 1" @@ -640,10 +640,10 @@ msgid "MO drives:" msgstr "Napędy MO:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Dyski wymienne:" msgid "Removable disk drives:" msgstr "Stacje dysków wymiennych:" @@ -742,16 +742,16 @@ msgid "Surface images" msgstr "Obrazy powierzchni" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "Maszyna \"%hs\" nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/machines. Przełączanie na dostępną maszynę." +msgstr "Maszyna „%hs” nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/machines. Przełączanie na dostępną maszynę." msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." -msgstr "Karta wideo \"%hs\" nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Przełączanie na dostępną kartę graficzną." +msgstr "Karta wideo „%hs” nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Przełączanie na dostępną kartę graficzną." msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card." -msgstr "Karta wideo 2 \"%hs\" nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Wyłączenie drugiej karty graficznej." +msgstr "Karta wideo 2 „%hs” nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Wyłączenie drugiej karty graficznej." msgid "Device \"%hs\" is not available due to missing ROMs. Ignoring the device." -msgstr "Urządzenie \"%hs\" nie jest dostępne, ponieważ brakuje ROM-ów. Ignorowanie urządzenia." +msgstr "Urządzenie „%hs” nie jest dostępne, ponieważ brakuje ROM-ów. Ignorowanie urządzenia." msgid "Machine" msgstr "Maszyna" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Porty (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Porty" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Porty szeregowe:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Porty równoległe:" msgid "Storage controllers" msgstr "Kontrolery pamięci masowej" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Dyski twarde" msgid "Disks:" -msgstr "" +msgstr "Dyski:" msgid "Floppy:" -msgstr "" +msgstr "Dyskietki:" msgid "Controllers:" -msgstr "" +msgstr "Kontrolery:" msgid "Floppy & CD-ROM drives" msgstr "Napędy dyskietek i CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Inne urządzenia peryferyjne" msgid "Other devices" -msgstr "" +msgstr "Inne urządzenia" msgid "Click to capture mouse" msgstr "Kliknij, by przechwycić mysz" @@ -952,16 +952,16 @@ msgid "Internal device" msgstr "Urządzenie wewnętrzne" msgid "&File" -msgstr "" +msgstr "&Plik" msgid "&New machine..." -msgstr "" +msgstr "&Nowa maszyna..." msgid "&Check for updates..." -msgstr "" +msgstr "&Sprawdź aktualizacje..." msgid "Exit" -msgstr "Zakończ" +msgstr "Za&kończ" msgid "No ROMs found" msgstr "Nie znaleziono ROM-ów" @@ -982,7 +982,7 @@ msgid "86Box v" msgstr "86Box v" msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information." -msgstr "Emulator starych komputerów\n\nAutorzy: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, i inni.\n\nZ wcześniejszym wkładem od Sarah Walker, leilei, JohnElliott, greatpsycho i innych.\n\nPrzetłumaczony przez: Fanta-Shokata, Lili1228\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji." +msgstr "Emulator starych komputerów\n\nAutorzy: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, i inni.\n\nZ wcześniejszym wkładem od Sarah Walker, leilei, JohnElliott, greatpsycho i innych.\n\nPrzetłumaczony przez: Lili1228\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji." msgid "Hardware not available" msgstr "Sprzęt niedostępny" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Zatrzymaj wykonywanie" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Naciśnij Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Twardy reset" msgid "Force shutdown" -msgstr "" +msgstr "Wymuś zamknięcie" msgid "Start" -msgstr "" +msgstr "Uruchom" msgid "Not running" -msgstr "" +msgstr "Wyłączona" msgid "Running" -msgstr "" +msgstr "Uruchomiona" msgid "Paused" -msgstr "" +msgstr "Wstrzymana" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Oczekiwanie" msgid "Powered Off" -msgstr "" +msgstr "Wyłączona" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n uruchomion(a/e/ych)" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n wstrzyman(a/e/ych)" + +msgid "%n waiting" +msgstr "%n oczekując(a/e/ych)" + +msgid "%1 total" +msgstr "Łącznie %1" + +msgid "VMs: %1" +msgstr "Maszyny wirtualne: %1" msgid "System Directory:" -msgstr "" +msgstr "Folder systemowy:" msgid "Choose directory" -msgstr "" +msgstr "Wybierz folder" msgid "Choose configuration file" -msgstr "" +msgstr "Wybierz plik konfiguracyjny" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Pliki konfiguracyjne 86Boxa (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Nieudany odczyt konfiguracji" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Nie udało się otworzyć wybranego pliku konfiguracyjnego do odczytu: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Użyj wyrażeń regularnych w polu wyszukiwania" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "Liczba obecnie aktywnych maszyn: %1. Czy na pewno chcesz, mimo to, wyjść z menedżera maszyn wirtualnych?" msgid "Add new system wizard" -msgstr "" +msgstr "Kreator dodawania nowego systemu" msgid "Introduction" -msgstr "" +msgstr "Wstęp" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Ten kreator pomoże Ci dodać nowy system do 86Boxa." msgid "New configuration" -msgstr "" +msgstr "Nowa konfiguracja" msgid "Complete" -msgstr "" +msgstr "Ukończono" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Kreator teraz uruchomi konfigurację dla nowego systemu." msgid "Use existing configuration" -msgstr "" +msgstr "Użyj istniejącej konfiguracji" msgid "Type some notes here" -msgstr "" +msgstr "Wpisz tutaj swoje notatki" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Wklej zawartość istniejącego pliku konfiguracyjnego w poniższe pole." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Wczytaj konfigurację z pliku" msgid "System name" -msgstr "" +msgstr "Nazwa systemu" msgid "System name:" -msgstr "" +msgstr "Nazwa systemu:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Nazwa systemu nie może zawierać niektórych znaków" msgid "System name already exists" -msgstr "" +msgstr "Nazwa systemu już istnieje" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Wprowadź folder dla systemu" msgid "Directory does not exist" -msgstr "" +msgstr "Folder nie istnieje" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Zostanie utworzony nowy folder dla systemu w wybranym powyżej folderze" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Lokalizacja systemu:" msgid "System name and location" -msgstr "" +msgstr "Nazwa i lokalizacja systemu" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Podaj nazwę system i wybierz jego lokalizację" msgid "Enter the name of the system" -msgstr "" +msgstr "Podaj nazwę systemu" msgid "Please enter a system name" -msgstr "" +msgstr "Proszę podać nazwę systemu" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Nazwa wyświetlana (opcjonalne):" msgid "Display name:" -msgstr "" +msgstr "Nazwa wyświetlana:" msgid "Set display name" -msgstr "" +msgstr "Ustaw nazwę wyświetlaną" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Podaj nową nazwę wyświetlaną (wyczyść, by zresetować)" msgid "Change &display name..." -msgstr "" +msgstr "Zmień wyświetlaną &nazwę..." msgid "Context Menu" -msgstr "" +msgstr "Menu kontekstowe" msgid "&Open folder..." -msgstr "" +msgstr "&Otwórz folder..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Otwórz &tackę drukarki..." msgid "Set &icon..." -msgstr "" +msgstr "&Ustaw ikonę..." msgid "Select an icon" -msgstr "" +msgstr "Wybierz ikonę" msgid "C&lone..." -msgstr "" +msgstr "&Klonuj..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Maszyna wirtualna „%1” (%2) zostanie sklonowana jako:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Folder %1 już istnieje" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Nie możesz użyć następujących znaków w nazwie: %1" msgid "Clone" -msgstr "" +msgstr "Klonuj" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Nie udało się stworzyć folderu dla klonowanej maszyny wirtualnej" msgid "Failed to clone VM." -msgstr "" +msgstr "Nie udało się sklonować maszyny wirtualnej." msgid "Directory in use" -msgstr "" +msgstr "Folder w użyciu" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Wybrany folder jest już w użyciu. Proszę wybrać inny folder." msgid "Create directory failed" -msgstr "" +msgstr "Nieudane utworzenie folderu" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Nie udało się utworzyć folderu dla nowego systemu" msgid "Configuration write failed" -msgstr "" +msgstr "Nieudany zapis konfiguracji" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Nie udało się otworzyć pliku %1 do zapisu" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Błąd dodawania systemu" msgid "Remove directory failed" -msgstr "" +msgstr "Nieudane usunięcie folderu" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Nie udało się usunąć niektórych plików w folderze maszyny wirtualnej. Proszę usunąć je ręcznie." msgid "Build" -msgstr "" +msgstr "Kompilacja" msgid "Version" -msgstr "" +msgstr "Wersja" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Dostępna jest aktualizacja 86Boxa: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Wystąpił błąd podczas sprawdzania aktualizacji %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Dostępna jest aktualizacja 86Boxa!" msgid "Warning" -msgstr "" +msgstr "Ostrzeżenie" msgid "&Kill" -msgstr "" +msgstr "&Zabij" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Zabicie maszyny wirtualnej może spowodować utratę danych. Zrób to tylko, jeśli proces 86Boxa się zawiesił.\n\nCzy na pewno chcesz zabić maszynę wirtualną „%1”?" msgid "&Delete" -msgstr "" +msgstr "&Usuń" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Czy na pewno chcesz usunąć maszynę wirtualną „%1” i jej wszystkie pliki? Tej operacji nie można cofnąć!" msgid "Show &config file" -msgstr "" +msgstr "&Pokaż plik konfiguracyjny" msgid "No screenshot" -msgstr "" +msgstr "Brak zrzutów ekranu" msgid "Search" -msgstr "" +msgstr "Szukanie" msgid "Searching for VMs..." -msgstr "" +msgstr "Szukanie maszyn wirtualnych..." msgid "Found %1" -msgstr "" +msgstr "Znaleziono %1" msgid "System" -msgstr "" +msgstr "System" msgid "Storage" -msgstr "" +msgstr "Pamięć" msgid "Disk %1: " -msgstr "" +msgstr "Dysk %1: " msgid "No disks" -msgstr "" +msgstr "Brak dysków" msgid "Audio" -msgstr "" +msgstr "Dźwięk" msgid "Audio:" -msgstr "" +msgstr "Dźwięk:" msgid "ACPI shutdown" msgstr "Wyłączenie ACPI" @@ -1626,9 +1632,6 @@ msgstr "Lista urządzeń MCA:" msgid "&Tablet tool" msgstr "Narzędzie do tabletów" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "O &Qt" @@ -1636,10 +1639,10 @@ msgid "&MCA devices..." msgstr "Urządzenia MCA..." msgid "Show non-&primary monitors" -msgstr "Pokaż monitory inne niż podstawowe" +msgstr "Pokaż monitory &inne niż podstawowe" msgid "Open screenshots &folder..." -msgstr "Otwórz folder zrzutów ekranu..." +msgstr "Otwórz folder zrzutów &ekranu..." msgid "Appl&y fullscreen stretch mode when maximized" msgstr "Zastosowanie trybu rozciągania na pełnym ekranie w stanie zmaksymalizowanym" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Null Driver" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1726,13 +1729,13 @@ msgid "This machine might have been moved or copied." msgstr "To urządzenie mogło zostać przeniesione lub skopiowane." msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." -msgstr "Aby zapewnić prawidłową funkcjonalność sieci, 86Box musi wiedzieć, czy to urządzenie zostało przeniesione lub skopiowane.\n\nW przypadku braku pewności, wybrać opcję \"Zostało skopiowane\"." +msgstr "Aby zapewnić prawidłową funkcjonalność sieci, 86Box musi wiedzieć, czy to maszyna zostało przeniesiona albo skopiowana.\n\nW przypadku braku pewności, wybierz opcję „Została skopiowana”." msgid "I Moved It" -msgstr "Zostało przeniesione" +msgstr "Została przeniesiona" msgid "I Copied It" -msgstr "Zostało skopiowane" +msgstr "Została skopiowana" msgid "86Box Monitor #" msgstr "86Box Monitor " @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Karta sieciowa nr 1" @@ -1921,10 +1924,10 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ portu szeregowego" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ portu równoległego" msgid "BIOS Revision" msgstr "Rewizja BIOS-u" @@ -2152,7 +2155,7 @@ msgid "SB Address" msgstr "Adres SB" msgid "Adlib Address" -msgstr "" +msgstr "Adres Adlib" msgid "Use EEPROM setting" msgstr "Użyj ustawień z EEPROM" @@ -2203,7 +2206,7 @@ msgid "GUS type" msgstr "Typ GUS" msgid "Enable 0x04 \"Exit 86Box\" command" -msgstr "Włącz polecenie 0x04 \"Wyjdź z 86Boxa\"" +msgstr "Włącz polecenie 0x04 „Wyjdź z 86Boxa”" msgid "Display type" msgstr "Typ ekranu" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Kompozyt" +msgid "True color" +msgstr "Prawdziwy kolor" + msgid "Old" msgstr "Stary" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Grafika 3Dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 jednostki TMU)" @@ -2689,7 +2695,7 @@ msgid "Unable to find Dot-Matrix fonts" msgstr "Nie można znaleźć fontów igłowych" msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer." -msgstr "Fonty TrueType w katalogu \"roms/printer/fonts\" są wymagane do emulacji generycznej drukarki igłowej ESC/P." +msgstr "Fonty TrueType w katalogu „roms/printer/fonts” są wymagane do emulacji generycznej drukarki igłowej ESC/P." msgid "Inhibit multimedia keys" msgstr "Przejmij klawisze multimedialne" @@ -2809,94 +2815,142 @@ msgid "SoundFont files" msgstr "Pliki SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Switch lokalny" msgid "Remote Switch" -msgstr "" +msgstr "Switch zdalny" msgid "Switch:" -msgstr "" +msgstr "Switch:" msgid "Hub Mode" -msgstr "" +msgstr "Tryb hub" msgid "Hostname:" -msgstr "" +msgstr "Nazwa komputera:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Wyczyść NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "To usunie wszystkie pliki NVRAM (i powiązane) maszyny wirtualnej, zlokalizowane w podkatalogu „nvr”. Będziesz musieć przekonfigurować BIOS (i prawdopodobnie inne urządzenia w maszynie wirtualnej), jeśli dotyczy.\n\nCzy na pewno chcesz wyczyścić całą zawartość NVRAM maszyny wirtualnej \"%1\"?" msgid "Success" -msgstr "" +msgstr "Sukces" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Pomyślnie wyczyszczono zawartość NVRAM maszyny wirtualnej „%1”" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Wystąpił błąd podczas próby wyczyszczenia zawartości NVRAM maszyny wirtualnej „%1”" msgid "%1 VM Manager" -msgstr "" +msgstr "Menedżer maszyn wirtualnych %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n dysk(i/ów)" msgid "Unknown Status" -msgstr "" +msgstr "Status nieznany" msgid "No Machines Found!" -msgstr "" +msgstr "Nie znaleziono maszyn!" msgid "Check for updates on startup" -msgstr "" +msgstr "Sprawdzaj aktualizacje przy starcie" msgid "Unable to determine release information" -msgstr "" +msgstr "Nie udało się ustalić informacji o wydaniu" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Wystąpił błąd podczas sprawdzania aktualizacji:\n\n%1\n\nSpróbuj ponownie później." msgid "Update check complete" -msgstr "" +msgstr "Sprawdzanie aktualizacji ukończone" + +msgid "stable" +msgstr "stabilnej" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Używasz najnowszej wersji %1 86Boxa: %2" msgid "version" -msgstr "" +msgstr "wersja" msgid "build" -msgstr "" +msgstr "kompilacja" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Aktualnie używasz wersji %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Wersja %1 jest teraz dostępna." + +msgid "You are currently running build %1." +msgstr "Aktualnie używasz kompilacji %1." + +msgid "Build %1 is now available." +msgstr "Kompilacja %1 jest teraz dostępna." + +msgid "Would you like to visit the download page?" +msgstr "Czy chcesz odwiedzić stronę pobierania?" msgid "Visit download page" -msgstr "" +msgstr "Odwiedź stronę pobierania" msgid "Update check" -msgstr "" +msgstr "Sprawdzanie aktualizacji" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Sprawdzanie aktualizacji..." msgid "86Box Update" -msgstr "" +msgstr "Aktualizacja 86Boxa" msgid "Release notes:" -msgstr "" +msgstr "Uwagi do wydania:" + +msgid "%1 Hz" +msgstr "%1 Hz" + +msgid "Virtual machine crash" +msgstr "Awaria maszyny wirtualnej" + +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Proces maszyny wirtualnej „%1” zakończył się nieoczekiwanie z kodem błędu %2." + +msgid "The system will not be added." +msgstr "System nie będzie dodany." + +msgid "&Update mouse every CPU frame" +msgstr "Aktualizuj &mysz z każdą ramką CPU" + +msgid "Hue" +msgstr "Barwa" + +msgid "Saturation" +msgstr "Nasycenie" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Jasność" + +msgid "Sharpness" +msgstr "Ostrość" + +msgid "&CGA composite settings..." +msgstr "Ustawienia trybu kompozytowego &CGA..." + +msgid "CGA composite settings" +msgstr "Ustawienia trybu kompozytowego CGA" diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po index 94fde8f9e..68e13e876 100644 --- a/src/qt/languages/pt-BR.po +++ b/src/qt/languages/pt-BR.po @@ -43,7 +43,7 @@ msgid "&Hide status bar" msgstr "Ocultar barra de &status" msgid "Hide &toolbar" -msgstr "Ocultar barra de &ferramenta" +msgstr "Ocultar barra de &ferramentas" msgid "&Resizeable window" msgstr "&Janela redimensionável" @@ -57,9 +57,6 @@ msgstr "&Renderizador" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (Núcleo 3.0)" @@ -67,10 +64,10 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify &dimensions..." -msgstr "Especificar as dimensões..." +msgstr "Especificar as dime&nsões..." -msgid "F&orce 4:3 display ratio" -msgstr "F&orçar proporção de tela em 4:3" +msgid "Force &4:3 display ratio" +msgstr "Forçar proporção de tela em &4:3" msgid "&Window scale factor" msgstr "F&ator de redimensionamento da janela" @@ -115,13 +112,13 @@ msgid "&Linear" msgstr "&Linear" msgid "Hi&DPI scaling" -msgstr "Escala Hi&DPI" +msgstr "Escala &HiDPI" msgid "&Fullscreen" msgstr "&Tela cheia" msgid "Fullscreen &stretch mode" -msgstr "Modo de redimensionamento da tela &cheia" +msgstr "Modo de re&dimensionamento da tela cheia" msgid "&Full screen stretch" msgstr "&Tela cheia redimensionada" @@ -138,7 +135,7 @@ msgstr "&Redimensionamento com valores inteiros" msgid "4:&3 Integer scale" msgstr "Redimensionamento com valores inteiros 4:&3" -msgid "E&GA/(S)VGA settings" +msgid "EGA/(S)&VGA settings" msgstr "Configurações de EGA/(S)&VGA" msgid "&Inverted VGA monitor" @@ -160,7 +157,7 @@ msgid "Generic RGBI color monitor" msgstr "Monitor colorido RGBI genérico" msgid "&Amber monitor" -msgstr "Monitor &âmbar" +msgstr "Monitor âmb&ar" msgid "&Green monitor" msgstr "Monitor &verde" @@ -427,7 +424,7 @@ msgid "XGA Graphics" msgstr "Gráficos XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "IBM PS/55 Display Adapter Graphics" +msgstr "Gráficos IBM PS/55 Display Adapter" msgid "Keyboard:" msgstr "Teclado:" @@ -519,6 +516,9 @@ msgstr "Dispositivo LPT3:" msgid "LPT4 Device:" msgstr "Dispositivo LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA ECP LPT Interna:" + msgid "Serial port 1" msgstr "Porta serial 1" @@ -774,11 +774,11 @@ msgstr "Portas (COM & LPT)" msgid "Ports" msgstr "Portas" -msgid "Serial ports" -msgstr "Portas seriais" +msgid "Serial ports:" +msgstr "Portas seriais:" -msgid "Parallel ports" -msgstr "Portas Paralelas" +msgid "Parallel ports:" +msgstr "Portas Paralelas:" msgid "Storage controllers" msgstr "Controladores de armaz." @@ -1081,19 +1081,28 @@ msgid "Running" msgstr "Rodando" msgid "Paused" -msgstr "Pausado" +msgstr "Pausada" -msgid "Paused (Waiting)" -msgstr "Pausado (Esperando)" +msgid "Waiting" +msgstr "Esperando" msgid "Powered Off" -msgstr "Desligado" +msgstr "Desligada" -msgid "waiting" -msgstr "esperando" +msgid "%n running" +msgstr "%n rodando" -msgid "total" -msgstr "total" +msgid "%n paused" +msgstr "%n pausada" + +msgid "%n waiting" +msgstr "%n esperando" + +msgid "%1 total" +msgstr "%1 total" + +msgid "VMs: %1" +msgstr "MVs: %1" msgid "System Directory:" msgstr "Diretório do Sistema:" @@ -1117,7 +1126,7 @@ msgid "Use regular expressions in search box" msgstr "Usar expressões regulares na caixa de pesquisa" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "%1 máquina(s) estão ativas atualmente. Tem certeza que deseja encerrar o gerenciador de VM mesmo?" +msgstr "%1 máquina(s) estão ativas atualmente. Tem certeza que deseja encerrar o gerenciador de MV mesmo assim?" msgid "Add new system wizard" msgstr "Assistente para novo sistema" @@ -1149,9 +1158,6 @@ msgstr "Cole o conteúdo de uma configuração existente na caixa abaixo." msgid "Load configuration from file" msgstr "Carregar configuração do arquivo" -msgid "System Name" -msgstr "Nome do Sistema" - msgid "System name" msgstr "Nome do sistema" @@ -1176,9 +1182,6 @@ msgstr "Um novo diretório para o sistema será criado no diretório acima" msgid "System location:" msgstr "Local do sistema:" -msgid "System Location" -msgstr "Local do Sistema" - msgid "System name and location" msgstr "Nome do sistema e local" @@ -1191,8 +1194,8 @@ msgstr "Digite o nome do sistema" msgid "Please enter a system name" msgstr "Por favor digite um nome de sistema" -msgid "Display Name (optional)" -msgstr "Nome de exibição (opcional)" +msgid "Display name (optional):" +msgstr "Nome de exibição (opcional):" msgid "Display name:" msgstr "Nome de exibição:" @@ -1212,7 +1215,7 @@ msgstr "Menu de contexto" msgid "&Open folder..." msgstr "Abrir &pasta..." -msgid "Open &printer tray..." +msgid "Open p&rinter tray..." msgstr "Abrir fila da &impressora..." msgid "Set &icon..." @@ -1237,10 +1240,10 @@ msgid "Clone" msgstr "Clonar" msgid "Failed to create directory for cloned VM" -msgstr "Falha ao criar o diretório para a VM clonada" +msgstr "Falha ao criar o diretório para a MV clonada" msgid "Failed to clone VM." -msgstr "Falha ao clonar VM." +msgstr "Falha ao clonar MV." msgid "Directory in use" msgstr "Diretório em uso" @@ -1263,9 +1266,6 @@ msgstr "Impossível abrir o arquivo de configuração %1 para escrita" msgid "Error adding system" msgstr "Erro adicionando sistema" -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "Término anormal do programa ao criar novo sistema: código de saída %1, estado de saída %2.\n\nO sistema não será adicionado." - msgid "Remove directory failed" msgstr "Falha ao remover diretório" @@ -1273,11 +1273,17 @@ msgid "Some files in the machine's directory were unable to be deleted. Please d msgstr "Alguns arquivos no diretório da máquina não puderam ser apagados. Por favor apágue-os manualmente." msgid "Build" -msgstr "Build" +msgstr "Compilação" msgid "Version" msgstr "Versão" +msgid "An update to 86Box is available: %1 %2" +msgstr "Uma atualização do 86Box está disponível: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Ocorreu um erro ao verificar por atualizações: %1" + msgid "An update to 86Box is available!" msgstr "Uma atualização do 86Box está disponível!" @@ -1306,7 +1312,7 @@ msgid "Search" msgstr "Procurar" msgid "Searching for VMs..." -msgstr "Procurando por VMs..." +msgstr "Procurando por MVs..." msgid "Found %1" msgstr "Encontrado %1" @@ -1594,7 +1600,7 @@ msgid "Fast" msgstr "Rápido" msgid "&Auto-pause on focus loss" -msgstr "Pausa &automática ao perder o foco" +msgstr "Pa&usa automática ao perder o foco" msgid "WinBox is no longer supported" msgstr "O WinBox não é mais suportado" @@ -1626,9 +1632,6 @@ msgstr "Lista de dispositivos MCA:" msgid "&Tablet tool" msgstr "Ferramenta para tablet" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Sobre o &Qt" @@ -1636,13 +1639,13 @@ msgid "&MCA devices..." msgstr "Dispositivos MCA..." msgid "Show non-&primary monitors" -msgstr "Mostrar monitores não primários" +msgstr "Mostrar monitores não &primários" msgid "Open screenshots &folder..." -msgstr "Abrir pasta de capturas de tela..." +msgstr "Ab&rir pasta de capturas de tela..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Aplicar modo de ampliação em tela cheia quando maximizado" +msgstr "Apl&icar modo de ampliação em tela cheia quando maximizado" msgid "&Cursor/Puck" msgstr "&Cursor/Puck" @@ -1789,7 +1792,7 @@ msgid "Serial port passthrough 4" msgstr "Passagem de porta serial 4" msgid "Renderer &options..." -msgstr "Opções do renderizador..." +msgstr "&Opções do renderizador..." msgid "PC/XT Keyboard" msgstr "Teclado PC/XT" @@ -2442,8 +2445,11 @@ msgstr "256 KB" msgid "Composite" msgstr "Composto" +msgid "True color" +msgstr "Cor real" + msgid "Old" -msgstr "Antiga" +msgstr "Antigo" msgid "New" msgstr "Novo" @@ -2551,7 +2557,7 @@ msgid "Color Non-Interlaced" msgstr "Colorido não entrelaçado" msgid "3Dfx Voodoo Graphics" -msgstr "Gráficos 3Dfx Voodoo" +msgstr "3Dfx Voodoo Graphics" msgid "3Dfx Voodoo 2" msgstr "3Dfx Voodoo 2" @@ -2823,20 +2829,17 @@ msgstr "Modo Hub" msgid "Hostname:" msgstr "Nome do Host:" -msgid "ISA RTC" -msgstr "RTC ISA" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "RAM ISA" - -msgid "ISA ROM" -msgstr "ROM ISA" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" msgstr "&Limpar NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "Isso irá apagar todos os arquivos NVRAM (e relacionados) da máquina virtual localizada no subdiretório \"nvr\". Você terá que reconfigurar as configurações do BIOS (e possívelmente outros dispositivos dentro da VM) novamente se aplicável.\n\nTem certeza que quer apagar todo o conteúdo NVRAM da máquina virtual \"%1\"?" +msgstr "Isso irá apagar todos os arquivos NVRAM (e relacionados) da máquina virtual localizada no subdiretório \"nvr\". Você terá que reconfigurar as configurações do BIOS (e possívelmente outros dispositivos dentro da MV) novamente se aplicável.\n\nTem certeza que quer apagar todo o conteúdo NVRAM da máquina virtual \"%1\"?" msgid "Success" msgstr "Sucesso" @@ -2844,11 +2847,11 @@ msgstr "Sucesso" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" msgstr "Conteúdo NVRAM da máquina virtual \"%1\" apagado com sucesso" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" msgstr "Um erro ocorreu ao tentar apagar o conteúdo NVRAM da máquina virtual \"%1\"" msgid "%1 VM Manager" -msgstr "%1 Gerenciador de VM" +msgstr "Gerenciador de MV do %1" msgid "%n disk(s)" msgstr "%1 disco(s)" @@ -2871,20 +2874,35 @@ msgstr "Ocorreu um erro ao verificar por atualizações:\n\n%1\n\nPor favor tent msgid "Update check complete" msgstr "Verificação de atualização completada" +msgid "stable" +msgstr "estável" + +msgid "beta" +msgstr "beta" + msgid "You are running the latest %1 version of 86Box: %2" -msgstr "Você está executando a última %1 versão do 86Box: %2" +msgstr "Você está executando a última versão %1 do 86Box: %2" msgid "version" msgstr "versão" msgid "build" -msgstr "build" +msgstr "compilação" -msgid "You are currently running %1 %2. " -msgstr "Você está executando atualmente %1 %2. " +msgid "You are currently running version %1." +msgstr "Você está executando atualmente a versão %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "%1 %2 está disponível. %3Gostaria de visitar a página de download?" +msgid "Version %1 is now available." +msgstr "Versão %2 está disponível." + +msgid "You are currently running build %1." +msgstr "Você está executando atualmente a compilação %1." + +msgid "Build %1 is now available." +msgstr "Compilação %2 está disponível." + +msgid "Would you like to visit the download page?" +msgstr "Gostaria de visitar a página de download?" msgid "Visit download page" msgstr "Visitar página de download" @@ -2892,7 +2910,7 @@ msgstr "Visitar página de download" msgid "Update check" msgstr "Verificação de atualização" -msgid "Checking for updates.." +msgid "Checking for updates..." msgstr "Verificando por atualizações.." msgid "86Box Update" @@ -2900,3 +2918,39 @@ msgstr "Atualização do 86Box" msgid "Release notes:" msgstr "Notas de lançamento:" + +msgid "%1 Hz" +msgstr "%1 Hz" + +msgid "Virtual machine crash" +msgstr "Falha da máquina virtual" + +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "O processo da máquina virtual \"%1\" terminou inesperadamente com o código de saída %2." + +msgid "The system will not be added." +msgstr "O sistema não será adicionado." + +msgid "&Update mouse every CPU frame" +msgstr "&Atualiza o estado do mouse em cada quadro do CPU" + +msgid "Hue" +msgstr "Matiz" + +msgid "Saturation" +msgstr "Saturação" + +msgid "Contrast" +msgstr "Contraste" + +msgid "Brightness" +msgstr "Brilho" + +msgid "Sharpness" +msgstr "Nitidez" + +msgid "&CGA composite settings..." +msgstr "Configurações do modo composto &CGA..." + +msgid "CGA composite settings" +msgstr "Configurações do modo composto CGA" diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po index df927a72e..61512ed9e 100644 --- a/src/qt/languages/pt-PT.po +++ b/src/qt/languages/pt-PT.po @@ -13,7 +13,7 @@ msgid "&Keyboard requires capture" msgstr "&Teclado requere captura" msgid "&Right CTRL is left ALT" -msgstr "&CTRL direito é ALT esquerdo" +msgstr "CTRL &direito é ALT esquerdo" msgid "&Hard Reset..." msgstr "&Reinicialização completa..." @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Pausa" msgid "Pause" -msgstr "" +msgstr "Pausa" msgid "Re&sume" -msgstr "" +msgstr "Reto&mar" msgid "E&xit" msgstr "&Sair" @@ -40,10 +40,10 @@ msgid "&View" msgstr "&Ver" msgid "&Hide status bar" -msgstr "&Ocultar barra de estado" +msgstr "Ocultar &barra de estado" msgid "Hide &toolbar" -msgstr "Hide &toolbar" +msgstr "Ocultar barra de &ferramentas" msgid "&Resizeable window" msgstr "&Janela redimensionável" @@ -57,9 +57,6 @@ msgstr "&Renderizador" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (Núcleo 3.0)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Especificar dimensões..." -msgid "F&orce 4:3 display ratio" -msgstr "&Forçar rácio de visualização 4:3" +msgid "Force &4:3 display ratio" +msgstr "Forçar rácio de visualização &4:3" msgid "&Window scale factor" msgstr "F&actor de escala de janela" @@ -106,7 +103,7 @@ msgid "&8x" msgstr "&8x" msgid "Fi<er method" -msgstr "Método de filtragem" +msgstr "Método de fil&tragem" msgid "&Nearest" msgstr "&Mais próximo" @@ -118,10 +115,10 @@ msgid "Hi&DPI scaling" msgstr "Escala Hi&DPI" msgid "&Fullscreen" -msgstr "E&crã cheio" +msgstr "Ecrã c&heio" msgid "Fullscreen &stretch mode" -msgstr "Modo &de estiramento na tela cheia" +msgstr "M&odo de estiramento na tela cheia" msgid "&Full screen stretch" msgstr "&Estiramento na tela cheia" @@ -138,8 +135,8 @@ msgstr "Escala &inteira" msgid "4:&3 Integer scale" msgstr "Escala inteira 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "Definições E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Definições EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "Monitor VGA &invertido" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "&Cores RGB" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (sem castanho)" msgid "&RGB Grayscale" msgstr "&RGB em escala de cinzentos" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Monitor RGBI genérico em cores" msgid "&Amber monitor" msgstr "Monitor âmb&ar" @@ -184,7 +181,7 @@ msgid "CGA/PCjr/Tandy/E&GA/(S)VGA overscan" msgstr "Overscan de CGA/PCjr/Tandy/E&GA/(S)VGA" msgid "Change contrast for &monochrome display" -msgstr "Mudar &contraste para ecrã monocromático" +msgstr "Mudar contraste para ecrã &monocromático" msgid "&Media" msgstr "&Media" @@ -196,13 +193,13 @@ msgid "&Settings..." msgstr "&Definições..." msgid "Settings..." -msgstr "" +msgstr "Definições..." msgid "&Update status bar icons" msgstr "&Atualizar ícones da barra de estado" msgid "Take s&creenshot" -msgstr "Gravar imagem de ecrã" +msgstr "Gravar imagem de &ecrã" msgid "S&ound" msgstr "&Som" @@ -211,7 +208,7 @@ msgid "&Preferences..." msgstr "&Preferências..." msgid "Enable &Discord integration" -msgstr "Ativar integração com &Discord" +msgstr "Ativar integração com D&iscord" msgid "Sound &gain..." msgstr "&Ganho de som..." @@ -223,7 +220,7 @@ msgid "End trace" msgstr "Terminar o rastreio" msgid "&Help" -msgstr "&Ajuda" +msgstr "Aj&uda" msgid "&Documentation..." msgstr "&Documentação..." @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Recompilador dinâmico" msgid "CPU frame size" -msgstr "" +msgstr "Tamanho de blocos do CPU" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Blocos mais grandes (menos suave)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Blocos mais pequenos (mais suave)" msgid "Video:" msgstr "Vídeo:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Gráficos XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Adaptador de apresentação gráfica IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Teclado:" msgid "Keyboard" -msgstr "" +msgstr "Teclado" msgid "Mouse:" msgstr "Rato:" msgid "Mouse" -msgstr "" +msgstr "Rato" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Disp. entrada MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Saída MIDI:" msgid "Standalone MPU-401" msgstr "MPU-401 autónomo" @@ -519,6 +516,9 @@ msgstr "Dispositivo LPT3:" msgid "LPT4 Device:" msgstr "Dispositivo LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA do ECP do LPT interno:" + msgid "Serial port 1" msgstr "Porta de série 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Controlador FD:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Controlador CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Controlador IDE terciário" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Controlador IDE quaternário" msgid "Hard disk" -msgstr "" +msgstr "Disco rígido" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Discos rígidos:" msgid "Firmware Version" -msgstr "" +msgstr "Versão de firmware" msgid "&New..." msgstr "&Novo..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Unidades magneto-ópticas:" msgid "MO:" -msgstr "" +msgstr "Magneto-ópticos:" msgid "Removable disks:" -msgstr "" +msgstr "Discos amovíveis:" msgid "Removable disk drives:" -msgstr "" +msgstr "Unidades de disco amovível:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Expansão de memória ISA" msgid "ISA ROM Cards" -msgstr "" +msgstr "Placas ROM ISA" msgid "Card 1:" msgstr "Placa 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Placa 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Placa ROM ISA genérica" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Placa ROM ISA dual genérica" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Placa ROM ISA quad genérica" msgid "ISABugger device" msgstr "Dispositivo ISABugger" @@ -703,19 +703,19 @@ msgid "Speed" msgstr "Velocidade" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Disco amovível %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Disco amovível %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Imagens de disco amovível" msgid "Image %1" -msgstr "" +msgstr "Imagem %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." -msgstr "O 86Box não conseguiu encontrar nenhuma imagem ROM utilizável.\n\nPor favor, vá a href=\"https://github.com/86Box/roms/releases/latest\">descarregue um pacote ROM e instale-o na pasta \"roms\"." +msgstr "O 86Box não conseguiu encontrar nenhuma imagem ROM utilizável.\n\nPor favor, vá a descarregue um pacote ROM e instale-o na pasta \"roms\"." msgid "(empty)" msgstr "(empty)" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Portas (COM e LPT)" msgid "Ports" -msgstr "" +msgstr "Portas" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Portas série:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Portas paralelas:" msgid "Storage controllers" msgstr "Dispositivos de armazenamento" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Discos rígidos" msgid "Disks:" -msgstr "" +msgstr "Discos:" msgid "Floppy:" -msgstr "" +msgstr "Disquete:" msgid "Controllers:" -msgstr "" +msgstr "Controladores:" msgid "Floppy & CD-ROM drives" msgstr "Unidades de disquete e CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Outros dispositivos" msgid "Other devices" -msgstr "" +msgstr "Outros dispositivos" msgid "Click to capture mouse" msgstr "Clique para capturar o rato" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Manípulo(s) de jogos de 2 botões" msgid "2-button flight yoke" -msgstr "" +msgstr "Manípulo de voo de 2 botões" msgid "4-button gamepad" -msgstr "" +msgstr "Manípulo(s) de jogos de 4 botões" msgid "4-button flight yoke" -msgstr "" +msgstr "Manípulo de voo de 4 botões" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Manípulo de voo de 2 botões com acelerador" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Manípulo de voo de 4 botões com acelerador" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volante Win95 (de 3 eixos, 4 botões)" msgid "None" msgstr "Nenhum" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Dispositivo integrado" msgid "&File" -msgstr "" +msgstr "F&icheiro" msgid "&New machine..." -msgstr "" +msgstr "&Nova máquina" msgid "&Check for updates..." -msgstr "" +msgstr "&Verificar para atualizações..." msgid "Exit" msgstr "Sair" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pausar execução" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Reinicialização completa" msgid "Force shutdown" -msgstr "" +msgstr "Desligamento forçado" msgid "Start" -msgstr "" +msgstr "Iniciar" msgid "Not running" -msgstr "" +msgstr "Não em execução" msgid "Running" -msgstr "" +msgstr "Em execução" msgid "Paused" -msgstr "" +msgstr "Em pausa" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Em espera" msgid "Powered Off" -msgstr "" +msgstr "Desligado" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n em execução" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n em pausa" + +msgid "%n waiting" +msgstr "%n em espera" + +msgid "%1 total" +msgstr "%1 total" + +msgid "VMs: %1" +msgstr "MVs: %1" msgid "System Directory:" -msgstr "" +msgstr "Directório de sistema:" msgid "Choose directory" -msgstr "" +msgstr "Escolher directório" msgid "Choose configuration file" -msgstr "" +msgstr "Escolher ficheiro de configuração" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Ficheiros de configuração do 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Falha na leitura da configuração" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Não foi possível abrir o ficheir de configurção seleccionado para leitura: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Usa expressões regulares na caixa de procura" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 máquina(s) estão actualmente activas. Quer mesmo sair do gerenciador de MVs" msgid "Add new system wizard" -msgstr "" +msgstr "Assistende de adicionamento do novo sistema" msgid "Introduction" -msgstr "" +msgstr "Introdução" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Esto ajudará-lhe a adicinar um novo sistema ao 86Box." msgid "New configuration" -msgstr "" +msgstr "Nova configuração" msgid "Complete" -msgstr "" +msgstr "Completar" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Este assistente agora vai abrir as definições do novo sistema." msgid "Use existing configuration" -msgstr "" +msgstr "Utilizar configuração existente" msgid "Type some notes here" -msgstr "" +msgstr "Escreve algumas notas aqui" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Colar o conteúdo do firecheiro da configuração existente na caixa em baixo." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Carregar configuração a partir do ficheiro" msgid "System name" -msgstr "" +msgstr "Nome do sistema" msgid "System name:" -msgstr "" +msgstr "Nome do sistema:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "O nome do sistem não pode conter alguns caracteres" msgid "System name already exists" -msgstr "" +msgstr "O nome do sistema já existe" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Por favor entre o directório para o sistema" msgid "Directory does not exist" -msgstr "" +msgstr "O directório não existe" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "O novo directório para o sistema será criado no directorio selecciado em cima" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Localização do sistema:" msgid "System name and location" -msgstr "" +msgstr "Nome e localização do sistema" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Escreve o nome do sistema e escolha a localização" msgid "Enter the name of the system" -msgstr "" +msgstr "Escreve o nome do sistema" msgid "Please enter a system name" -msgstr "" +msgstr "Por favor, escreve o nome do sistema" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Nome apresentado (opcional):" msgid "Display name:" -msgstr "" +msgstr "Nome apresentado:" msgid "Set display name" -msgstr "" +msgstr "Definir o nome apresentado" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Escreve o nome apresentado (vazio para repor)" msgid "Change &display name..." -msgstr "" +msgstr "Alterar o nome &apresentado..." msgid "Context Menu" -msgstr "" +msgstr "Menu de contexto" msgid "&Open folder..." -msgstr "" +msgstr "&Abrir pasta..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Abrir &bandeja de impressora..." msgid "Set &icon..." -msgstr "" +msgstr "Definir &ícone..." msgid "Select an icon" -msgstr "" +msgstr "Seleccionar um ícone" msgid "C&lone..." -msgstr "" +msgstr "C&lonar..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "A máquina virtual \"%1\" (%2) será clonada para:" msgid "Directory %1 already exists" -msgstr "" +msgstr "O directório %1 já existe" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Não pode usar os caracteres seguintes no nome: %1" msgid "Clone" -msgstr "" +msgstr "Clonar" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Falha na criação do directório para a MV clonada" msgid "Failed to clone VM." -msgstr "" +msgstr "Falha na clonaçào da MV." msgid "Directory in use" -msgstr "" +msgstr "Directório em uso" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "O directório seleccionado já está em uso. Por favor, escolhe um directório differente." msgid "Create directory failed" -msgstr "" +msgstr "Falha na criação do directório" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Não foi possível criar a pasta para o novo sistema" msgid "Configuration write failed" -msgstr "" +msgstr "Falha na escritura da configuração" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Não foi possível abrir o ficheiro de configuração em %1 para a escritura" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Error ao adicionar o sistema" msgid "Remove directory failed" -msgstr "" +msgstr "Falha na remoção do directório" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Não foi possível eliminar alguns ficheiros no directório da máquina. Por favor, elimene-las manualmente." msgid "Build" -msgstr "" +msgstr "Compilação" msgid "Version" -msgstr "" +msgstr "Versão" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Está disponível uma atualização pelo 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Ha occurrido um error na verificação das atualizações: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "É disponível uma atualização para o 86Box!" msgid "Warning" -msgstr "" +msgstr "Aviso" msgid "&Kill" -msgstr "" +msgstr "&Terminar" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Terminar uma máquina virtual pode causar a perdida de dados. Faça-o só se o processo 86Box bloqueia-se.\n\nTem cerza que quiser terminal a máquina virtual \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Apagar" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Tem certeza de que quiser apagar a máquina virtual \"%1\" e todos os seus ficheiros? Esta ação não pode ser desfeita!" msgid "Show &config file" -msgstr "" +msgstr "Mostrar ficheiro de &configuração" msgid "No screenshot" -msgstr "" +msgstr "Sem capturas de ecrã" msgid "Search" -msgstr "" +msgstr "Procurar" msgid "Searching for VMs..." -msgstr "" +msgstr "A procurar para MVs..." msgid "Found %1" -msgstr "" +msgstr "%1 encontrado" msgid "System" -msgstr "" +msgstr "Sistema" msgid "Storage" -msgstr "" +msgstr "Armazenamento" msgid "Disk %1: " -msgstr "" +msgstr "Disco %1: " msgid "No disks" -msgstr "" +msgstr "Sem discos" msgid "Audio" -msgstr "" +msgstr "Som" msgid "Audio:" -msgstr "" +msgstr "Som:" msgid "ACPI shutdown" msgstr "Encerramento ACPI" @@ -1594,7 +1600,7 @@ msgid "Fast" msgstr "Rápido" msgid "&Auto-pause on focus loss" -msgstr "Pausa &automática na perda de focagem" +msgstr "Pa&usa automática na perda de focagem" msgid "WinBox is no longer supported" msgstr "O WinBox não é mais suportado" @@ -1626,9 +1632,6 @@ msgstr "Lista de dispositivos MCA:" msgid "&Tablet tool" msgstr "Ferramenta para tablet" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Acerca do &Qt" @@ -1636,13 +1639,13 @@ msgid "&MCA devices..." msgstr "Dispositivos MCA..." msgid "Show non-&primary monitors" -msgstr "Mostrar monitores não primários" +msgstr "Mostrar monitores não &primários" msgid "Open screenshots &folder..." -msgstr "Abrir a pasta de capturas de ecrã..." +msgstr "Abrir a pas&ta de capturas de ecrã..." msgid "Appl&y fullscreen stretch mode when maximized" -msgstr "Aplicar o modo de estiramento na tela cheia quando maximizado" +msgstr "Apl&icar o modo de estiramento na tela cheia quando maximizado" msgid "&Cursor/Puck" msgstr "&Cursor/Puck" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Condutor nulo" msgid "NIC:" -msgstr "" +msgstr "Placa de rede:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Placa de rede 1" @@ -1789,43 +1792,43 @@ msgid "Serial port passthrough 4" msgstr "Passagem da porta de série 4" msgid "Renderer &options..." -msgstr "Opções do renderizador..." +msgstr "Opções do re&nderizador..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Teclado PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Teclado AT" msgid "AX Keyboard" -msgstr "" +msgstr "Teclado AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Teclado PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Teclado PS/55" msgid "Keys" -msgstr "" +msgstr "Teclas" msgid "Logitech/Microsoft Bus Mouse" -msgstr "Rato Logitech/Microsoft Bus" +msgstr "Rato bus Logitech/Microsoft" msgid "Microsoft Bus Mouse (InPort)" -msgstr "Rato Microsoft Bus (InPort)" +msgstr "Rato bus Microsoft (InPort)" msgid "Mouse Systems Serial Mouse" -msgstr "Sistemas de ratos Rato de série" +msgstr "Rato de série Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Rato bus Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Rato de série Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Rato de série Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Rato de série Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Rato PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Rato PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (série)" msgid "Default Baud rate" -msgstr "" +msgstr "Velocidade de transmissão padrão" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Modem padrão compatível com Hayes" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Dispositivo de entrada MIDI" msgid "BIOS file" -msgstr "" +msgstr "Ficheiro BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Ficheiro BIOS (ROM no. 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Ficheiro BIOS (ROM no. 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Ficheiro BIOS (ROM no. 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Ficheiro BIOS (ROM no. 4)" msgid "BIOS address" msgstr "Endereço da BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Endereço da BIOS (ROM no. 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Endereço da BIOS (ROM no. 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Endereço da BIOS (ROM no. 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Endereço da BIOS (ROM no. 4)" msgid "Enable BIOS extension ROM Writes" msgstr "Ativar as escritas de ROM de extensão da BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Ativar as escritas de ROM de extensão da BIOS (ROM no. 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Ativar as escritas de ROM de extensão da BIOS (ROM no. 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Ativar as escritas de ROM de extensão da BIOS (ROM no. 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Ativar as escritas de ROM de extensão da BIOS (ROM no. 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Base do buffer de quadros linear" msgid "Address" msgstr "Endereço" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ da porta série" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ da porta paralela" msgid "BIOS Revision" msgstr "Revisão da BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Versão da BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Idioma da BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Unidade de expansão IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "BASIC de cassete IBM" msgid "Translate 26 -> 17" msgstr "Traduzir 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Tamanho da BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Tamanho da BIOS (ROM no. 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Tamanho da BIOS (ROM no. 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Tamanho da BIOS (ROM no. 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Tamanho da BIOS (ROM no. 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Mapear C0000-C7FFF como UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Método de interpolação" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Carregamento dinámico de amostras" msgid "Reverb Output Gain" msgstr "Ganho da saída do reverb" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Ativar a porta de jogos" msgid "SID Model" -msgstr "" +msgstr "Modelo do SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Força do filtro do SID" msgid "Surround module" msgstr "Módulo Surround" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Endereço SB" msgid "Adlib Address" -msgstr "" +msgstr "Endereço Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Utilizar a definição da EEPROM" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2209,7 +2212,7 @@ msgid "Display type" msgstr "Tipo de ecrã" msgid "Composite type" -msgstr "Tipo composto" +msgstr "Tipo compósito" msgid "RGB type" msgstr "Tipo RGB" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Mistura" msgid "Font" -msgstr "" +msgstr "Tipo de letra" msgid "Bilinear filtering" msgstr "Filtragem bilinear" msgid "Video chroma-keying" -msgstr "" +msgstr "Utilizar a chave chroma do vídeo" msgid "Dithering" msgstr "Dithering" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Modo EMS" msgid "EMS Address" -msgstr "" +msgstr "Endereço da EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Endereço da EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Endereço da EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Tamanho da memória EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Tamanho da memória EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Tamanho da memória EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Activar a EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Activar a EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Activar a EMS 2" msgid "Address for > 2 MB" msgstr "Endereço para > 2 MB" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "Cinco + Roda" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Cinco + 2 Rodas" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 série / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Compósito" +msgid "True color" +msgstr "Cor verdadeira" + msgid "Old" msgstr "Antigo" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Interpolação linear" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Tem conjunto de caracters 8x8 secundário" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Tem a placa filha Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Contrasto monocromático alternativo" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Cinzento" msgid "Grayscale" -msgstr "" +msgstr "Escala de cinzentos" msgid "Color" msgstr "Cor" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs mais recente" msgid "Apply overscan deltas" -msgstr "" +msgstr "Aplicr deltas do overscan" msgid "Mono Interlaced" -msgstr "" +msgstr "Monocromático entrelaçado" msgid "Mono Non-Interlaced" msgstr "Monocromático não entrelaçado" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Gráficos 3Dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 unidades TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Tubo nomeado (servidor)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Tubo nomeado (cliente)" msgid "Host Serial Passthrough" msgstr "Passagem da porta de série do anfitrião" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "Elevado impacto no desempenho" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Disco RAM (velocidade máxima)" +msgstr "[Genérico] Disco RAM (velocidade máxima)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Genérico] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Genérico] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Genérico] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Genérico] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Genérico] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Genérico] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Genérico] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" msgstr "Clone IBM 8514/A (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Fabricante" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Expansão de memória genérica PC/XT" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "As fontes TrueType no diretório \"roms/printer/fonts\" são necessárias para a emulação da impressora matricial de pontos ESC/P genérica" msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Deshabilitar teclas de multimídia" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Pedir confirmação antes de salvar as definições" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Pedir confirmação antes da reinicialização completa" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Pedir confirmação antes de sair" msgid "Options" -msgstr "" +msgstr "Opções" msgid "Model" -msgstr "" +msgstr "Modelo" msgid "Model:" -msgstr "" +msgstr "Modelo:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Falha na inicialização do renderizador Vulkan." msgid "GLSL Error" -msgstr "" +msgstr "Erro de GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "Não foi possível carregar o shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "É requerida a versão 3.0 ou mais nova do OpenGL. A versão actual de GLSL é %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Não foi possível carregar a textura: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Não foi possível compilar o shader:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Programa não ligado:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Gerenciador de shaders" msgid "Shader Configuration" -msgstr "" +msgstr "Configuração do shader" msgid "Add" -msgstr "" +msgstr "Adicionar" msgid "Move up" -msgstr "" +msgstr "Mover para cima" msgid "Move down" -msgstr "" +msgstr "Mover para baixo" msgid "Could not load file %1" -msgstr "" +msgstr "Não foi possível carregar o ficheiro %1" msgid "Key Bindings:" -msgstr "" +msgstr "Teclas de atalho:" msgid "Action" -msgstr "" +msgstr "Ação" msgid "Keybind" -msgstr "" +msgstr "Atalho" msgid "Clear binding" -msgstr "" +msgstr "Limpar atalho" msgid "Bind" -msgstr "" +msgstr "Definir" msgid "Bind Key" -msgstr "" +msgstr "Definir tecla" msgid "Enter key combo:" -msgstr "" +msgstr "Escrever a combinação de teclas:" msgid "Bind conflict" -msgstr "" +msgstr "Conflicto entre atalhos" msgid "This key combo is already in use." -msgstr "" +msgstr "Esta combinação de teclas já está em uso." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Enviar Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Enviar Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Alternar o modo em ecrã cheio" msgid "Screenshot" -msgstr "" +msgstr "Captura de ecrã" msgid "Release mouse pointer" -msgstr "" +msgstr "Soltar o ponteiro do rato" msgid "Toggle pause" -msgstr "" +msgstr "Alternar a pausa" msgid "Toggle mute" -msgstr "" +msgstr "Alternar o estado silenciado" msgid "Text files" -msgstr "" +msgstr "Ficheiros de texto" msgid "ROM files" -msgstr "" +msgstr "Ficheiros da ROM" msgid "SoundFont files" -msgstr "" +msgstr "Ficheiros SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Comutador local" msgid "Remote Switch" -msgstr "" +msgstr "Comutador remoto" msgid "Switch:" -msgstr "" +msgstr "Comutador" msgid "Hub Mode" -msgstr "" +msgstr "Modo de concentrador" msgid "Hostname:" -msgstr "" +msgstr "Nome de anfitrião:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Limpar a NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Esto vai apagar todos of ficheirosa da NVRAM (e relacionados) da máquina virtual localizados no subdirectório \"nvr\". Terá que reconfigurar as definições da BIOS (e possívelmente dos outros dispositivos na MV) de novo se aplicável.\n\nTem certeza de que quiser limpar todos os conteúdos da NVRAM da máquina virtual \"%1\"?" msgid "Success" -msgstr "" +msgstr "Éxito" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Os conteúdos da NVRAM da máquina virtual \"%1\" foram limpados com éxito" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Occorreu um error na tentativa de limpar os conteúdos da NVRAM da máquina virtual \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Gerenciador de MVs de %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disco(s)" msgid "Unknown Status" -msgstr "" +msgstr "Estado desconhecido" msgid "No Machines Found!" -msgstr "" +msgstr "Nenhuma máquina encontrada!" msgid "Check for updates on startup" -msgstr "" +msgstr "Verificar para atualizações ao iniciar" msgid "Unable to determine release information" -msgstr "" +msgstr "Não foi possível determinar as informações da versão" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Occorreu um error na verificação para atualizações:\n\n%1\n\nPor favor, entente de novo mais tarde." msgid "Update check complete" -msgstr "" +msgstr "Verificaçõ para atualizacões completeda" + +msgid "stable" +msgstr "estável" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Está a utilizar a última versão %1 do 86Box: %2" msgid "version" -msgstr "" +msgstr "versão" msgid "build" -msgstr "" +msgstr "compilação" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Atualmente está a utilizar a versão %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "A versão %1 está agora disponível." + +msgid "You are currently running build %1." +msgstr "Atualmente está a utilizar a compilação %1." + +msgid "Build %1 is now available." +msgstr "A compilação %1 está agora disponível." + +msgid "Would you like to visit the download page?" +msgstr "Quiser visitar a pagina de transferências?" msgid "Visit download page" -msgstr "" +msgstr "Visitar a pagina de transferências" msgid "Update check" -msgstr "" +msgstr "Verificar atualizações" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "A verificar para atualizações..." msgid "86Box Update" -msgstr "" +msgstr "Atualização do 86Box" msgid "Release notes:" -msgstr "" +msgstr "Notas da versão:" -#~ msgid "HD Controller:" -#~ msgstr "Controlador HD:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Unidades ZIP:" +msgid "Virtual machine crash" +msgstr "Falecimento da máquina virtual" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "O processo da máquina virtual \"%1\" terminou inesperadamente com o código de saída %2." -#~ msgid "ZIP images" -#~ msgstr "Imagens ZIP" +msgid "The system will not be added." +msgstr "O sistema não será adicionado." + +msgid "&Update mouse every CPU frame" +msgstr "&Atualiza o estado do rato em cada bloco do CPU" + +msgid "Hue" +msgstr "Matiz" + +msgid "Saturation" +msgstr "Saturação" + +msgid "Contrast" +msgstr "Contraste" + +msgid "Brightness" +msgstr "Brilho" + +msgid "Sharpness" +msgstr "Nitidez" + +msgid "&CGA composite settings..." +msgstr "Definições do modo compósito &CGA..." + +msgid "CGA composite settings" +msgstr "Definições do modo compósito CGA" diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po index 305b99068..9b9d3756f 100644 --- a/src/qt/languages/ru-RU.po +++ b/src/qt/languages/ru-RU.po @@ -28,7 +28,7 @@ msgid "&Pause" msgstr "&Пауза" msgid "Pause" -msgstr "" +msgstr "Пауза" msgid "Re&sume" msgstr "В&озобновить" @@ -57,9 +57,6 @@ msgstr "&Рендеринг" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Указать размеры главного окна..." -msgid "F&orce 4:3 display ratio" -msgstr "У&становить соотношение сторон 4:3" +msgid "Force &4:3 display ratio" +msgstr "Установить соотношение сторон &4:3" msgid "&Window scale factor" msgstr "&Масштаб окна" @@ -138,8 +135,8 @@ msgstr "&Целочисленное масштабирование" msgid "4:&3 Integer scale" msgstr "4:&3 Целочисленное масштабирование" -msgid "E&GA/(S)VGA settings" -msgstr "Настройки E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Настройки EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Инвертировать цвета VGA" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Настройки машины..." msgid "Settings..." -msgstr "" +msgstr "Настройки машины..." msgid "&Update status bar icons" msgstr "&Обновление значков строки состояния" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Настройка" msgid "CPU:" -msgstr "" +msgstr "ЦП:" msgid "CPU type:" msgstr "Тип ЦП:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Ускоритель XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 Display Adapter Graphics" msgid "Keyboard:" msgstr "Клавиатура:" msgid "Keyboard" -msgstr "" +msgstr "Клавиатура" msgid "Mouse:" msgstr "Мышь:" msgid "Mouse" -msgstr "" +msgstr "Мышь" msgid "Joystick:" msgstr "Джойстик:" msgid "Joystick" -msgstr "" +msgstr "Джойстик" msgid "Joystick 1..." msgstr "Джойстик 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Устройство ввода MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Вывод MIDI:" msgid "Standalone MPU-401" msgstr "Отдельный MPU-401" @@ -519,6 +516,9 @@ msgstr "Устройство LPT3:" msgid "LPT4 Device:" msgstr "Устройство LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA ECP встроенного LPT:" + msgid "Serial port 1" msgstr "Последовательный порт COM1" @@ -640,10 +640,10 @@ msgid "MO drives:" msgstr "Магнитооптические дисководы:" msgid "MO:" -msgstr "" +msgstr "Дисководы MO:" msgid "Removable disks:" -msgstr "" +msgstr "Cъёмные диски:" msgid "Removable disk drives:" msgstr "Дисководы съёмных дисков:" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Порты (COM и LPT)" msgid "Ports" -msgstr "" +msgstr "Порты" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Последовательные порты:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Параллельные порты:" msgid "Storage controllers" msgstr "Контроллеры дисков" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Жёсткие диски" msgid "Disks:" -msgstr "" +msgstr "Диски:" msgid "Floppy:" -msgstr "" +msgstr "Дисководы:" msgid "Controllers:" -msgstr "" +msgstr "Контроллеры:" msgid "Floppy & CD-ROM drives" msgstr "Гибкие диски и CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Другая периферия" msgid "Other devices" -msgstr "" +msgstr "Другие устройства" msgid "Click to capture mouse" msgstr "Щёлкните мышью для захвата курсора" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Встроенное устройство" msgid "&File" -msgstr "" +msgstr "&Файл" msgid "&New machine..." -msgstr "" +msgstr "&Новая машина..." msgid "&Check for updates..." -msgstr "" +msgstr "&Проверить обновления..." msgid "Exit" msgstr "Выход" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Приостановить выполнение" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Нажать Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Холодная перезагрузка" msgid "Force shutdown" -msgstr "" +msgstr "Принудительное завершение работы" msgid "Start" -msgstr "" +msgstr "Пуск" msgid "Not running" -msgstr "" +msgstr "Не работает" msgid "Running" -msgstr "" +msgstr "Работает" msgid "Paused" -msgstr "" +msgstr "Приостановлена" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Ожидание" msgid "Powered Off" -msgstr "" +msgstr "Выключена" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n работает" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n приостановлено" + +msgid "%n waiting" +msgstr "%n ожидает" + +msgid "%1 total" +msgstr "всего %1" + +msgid "VMs: %1" +msgstr "Машин: %1" msgid "System Directory:" -msgstr "" +msgstr "Системная папка:" msgid "Choose directory" -msgstr "" +msgstr "Выбрать папку" msgid "Choose configuration file" -msgstr "" +msgstr "Выбрать файл конфигурации" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Файлы конфигурации 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Сбой при чтении конфигурации" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Невозможно открыть выбранный файл конфигурации для чтения: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Использовать регулярные выражения в поле поиска" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 машина(ы) в настоящее время активна(ы). Вы уверены, что всё равно хотите выйти из менеджера виртуальной машины?" msgid "Add new system wizard" -msgstr "" +msgstr "Мастер добавления новой системы" msgid "Introduction" -msgstr "" +msgstr "Введение" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Это поможет вам добавить новую систему в 86Box." msgid "New configuration" -msgstr "" +msgstr "Новая конфигурация" msgid "Complete" -msgstr "" +msgstr "Завершено" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Мастер теперь запустит конфигурацию для новой системы." msgid "Use existing configuration" -msgstr "" +msgstr "Использовать существующую конфигурацию" msgid "Type some notes here" -msgstr "" +msgstr "Введите здесь несколько заметок" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Вставьте содержимое существующего файла конфигурации в поле ниже." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Загрузить конфигурацию из файла" msgid "System name" -msgstr "" +msgstr "Название системы" msgid "System name:" -msgstr "" +msgstr "Название системы:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Название системы не может содержать определённые символы" msgid "System name already exists" -msgstr "" +msgstr "Название системы уже существует" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Пожалуйста, введите папку для системы" msgid "Directory does not exist" -msgstr "" +msgstr "Папка не существует" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Новая папка для системы будет создана в выбранной папке выше" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Расположение системы:" msgid "System name and location" -msgstr "" +msgstr "Название системы и расположение" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Введите название системы и выберите расположение" msgid "Enter the name of the system" -msgstr "" +msgstr "Введите название системы" msgid "Please enter a system name" -msgstr "" +msgstr "Пожалуйста, введите название системы" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Отображаемое имя (необязательно):" msgid "Display name:" -msgstr "" +msgstr "Отображаемое имя:" msgid "Set display name" -msgstr "" +msgstr "Установить отображаемое имя" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Введите новое отображаемое имя (пусто, чтобы сбросить)" msgid "Change &display name..." -msgstr "" +msgstr "Изменить &отображаемое имя..." msgid "Context Menu" -msgstr "" +msgstr "Контекстное меню" msgid "&Open folder..." -msgstr "" +msgstr "&Открыть папку..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Открыть папку &принтера..." msgid "Set &icon..." -msgstr "" +msgstr "Установить &значок..." msgid "Select an icon" -msgstr "" +msgstr "Выберите значок" msgid "C&lone..." -msgstr "" +msgstr "К&лонировать..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Виртуальная машина \"%1\" (%2) будет клонирована в:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Папка %1 уже существует" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Вы не можете использовать следующие символы в имени: %1" msgid "Clone" -msgstr "" +msgstr "Клонировать" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Не удалось создать папку для клонированной виртуальной машины" msgid "Failed to clone VM." -msgstr "" +msgstr "Не удалось клонировать виртуальную машину." msgid "Directory in use" -msgstr "" +msgstr "Папка используется" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Выбранная папка уже используется. Пожалуйста, выберите другую папку." msgid "Create directory failed" -msgstr "" +msgstr "Не удалось создать папку" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Невозможно создать папку для новой системы" msgid "Configuration write failed" -msgstr "" +msgstr "Не удалось записать файл конфигурации" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Невозможно открыть файл конфигурации в %1 для записи" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Ошибка добавления системы" msgid "Remove directory failed" -msgstr "" +msgstr "Сбой при удалении папки" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Некоторые файлы в папке машины невозможно удалить. Пожалуйста, удалите их вручную." msgid "Build" -msgstr "" +msgstr "Сборка" msgid "Version" -msgstr "" +msgstr "Версия" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Доступно обновление для 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "При проверке обновлений произошла ошибка: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Доступно обновление для 86Box!" msgid "Warning" -msgstr "" +msgstr "Внимание" msgid "&Kill" -msgstr "" +msgstr "&Завершить процесс" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Принудительное завершение процесса виртуальной машины может привести к потере данных. Делайте это только в том случае, если процесс 86Box завис.\n\nВы действительно хотите принудительно завершить процесс виртуальной машины \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Удалить" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Вы действительно хотите удалить виртуальную машину \"%1\" и все её файлы? Это действие не может быть отменено!" msgid "Show &config file" -msgstr "" +msgstr "Показать файл &конфигурации" msgid "No screenshot" -msgstr "" +msgstr "Нет скриншота" msgid "Search" -msgstr "" +msgstr "Поиск" msgid "Searching for VMs..." -msgstr "" +msgstr "Поиск виртуальных машин..." msgid "Found %1" -msgstr "" +msgstr "Найдено %1" msgid "System" -msgstr "" +msgstr "Система" msgid "Storage" -msgstr "" +msgstr "Диски" msgid "Disk %1: " -msgstr "" +msgstr "Диск %1: " msgid "No disks" -msgstr "" +msgstr "Нет дисков" msgid "Audio" -msgstr "" +msgstr "Аудио" msgid "Audio:" -msgstr "" +msgstr "Аудио:" msgid "ACPI shutdown" msgstr "Сигнал завершения ACPI" @@ -1626,9 +1632,6 @@ msgstr "Список устройств MCA:" msgid "&Tablet tool" msgstr "Планшетный &инструмент" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "О &Qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Нулевой драйвер" msgid "NIC:" -msgstr "" +msgstr "Сетевой адаптер:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "МиБ" msgid "GiB" -msgstr "" +msgstr "ГиБ" msgid "Network Card #1" msgstr "Сетевая карта 1" @@ -1912,7 +1915,7 @@ msgid "Enable BIOS extension ROM Writes (ROM #4)" msgstr "Разрешить запись в ПЗУ расширения BIOS (ПЗУ #4)" msgid "Linear framebuffer base" -msgstr "Линейная база кадрового буфера" +msgstr "Линейный фреймбуфер" msgid "Address" msgstr "Адрес" @@ -2442,6 +2445,9 @@ msgstr "256 КБ" msgid "Composite" msgstr "Композитное видео" +msgid "True color" +msgstr "True Color" + msgid "Old" msgstr "Старый" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Ускоритель 3Dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU)" @@ -2823,92 +2829,128 @@ msgstr "Режим концентратора" msgid "Hostname:" msgstr "Имя хоста:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA ОЗУ:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ПЗУ:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Стереть NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Это удалит все файлы NVRAM (и связанные) виртуальной машины, расположенной в подпапке \"nvr\". Вам придётся снова реконфигурировать настройки BIOS (и, возможно, другие устройства внутри виртуальной машины), если применимо.\n\nВы уверены, что хотите стереть всё содержимое NVRAM виртуальной машины \"%1\"?" msgid "Success" -msgstr "" +msgstr "Успешно" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Успешно стёрто содержимое NVRAM виртуальной машины \"%1\"" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Произошла ошибка при попытке стереть содержимое NVRAM виртуальной машины \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Менеджер виртуальных машин %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n диск(ов)" msgid "Unknown Status" -msgstr "" +msgstr "Неизвестный статус" msgid "No Machines Found!" -msgstr "" +msgstr "Машины не найдены!" msgid "Check for updates on startup" -msgstr "" +msgstr "Проверять обновления при запуске" msgid "Unable to determine release information" -msgstr "" +msgstr "Невозможно определить информацию о релизе" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Произошла ошибка при проверке обновлений:\n\n%1\n\nПожалуйста, попробуйте еще раз позже." msgid "Update check complete" -msgstr "" +msgstr "Проверка обновлений завершена" + +msgid "stable" +msgstr "стабильную" + +msgid "beta" +msgstr "бета" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Вы используете последнюю %1 версию 86Box: %2" msgid "version" -msgstr "" +msgstr "версия" msgid "build" -msgstr "" +msgstr "сборка" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Вы сейчас используете версию %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Доступна версия %1." + +msgid "You are currently running build %1." +msgstr "Вы сейчас используете сборку %1." + +msgid "Build %1 is now available." +msgstr "Доступна сборка %1." + +msgid "Would you like to visit the download page?" +msgstr "Открыть страницу загрузки?" msgid "Visit download page" -msgstr "" +msgstr "Открыть страницу загрузки" msgid "Update check" -msgstr "" +msgstr "Проверка обновлений" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Проверка обновлений..." msgid "86Box Update" -msgstr "" +msgstr "Обновление 86Box" msgid "Release notes:" -msgstr "" +msgstr "Примечания к релизу:" -#~ msgid "HD Controller:" -#~ msgstr "Контроллер HD:" +msgid "%1 Hz" +msgstr "%1 Гц" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP дисководы:" +msgid "Virtual machine crash" +msgstr "Сбой виртуальной машины" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Процесс виртуальной машины \"%1\" неожиданно завершился с кодом завершения %2." -#~ msgid "ZIP images" -#~ msgstr "Образы ZIP" +msgid "The system will not be added." +msgstr "Система не будет добавлена." + +msgid "&Update mouse every CPU frame" +msgstr "&Обновлять мышь при каждом кадре ЦП" + +msgid "Hue" +msgstr "Тон" + +msgid "Saturation" +msgstr "Насыщенность" + +msgid "Contrast" +msgstr "Контраст" + +msgid "Brightness" +msgstr "Яркость" + +msgid "Sharpness" +msgstr "Резкость" + +msgid "&CGA composite settings..." +msgstr "Настройки композитного видео &CGA..." + +msgid "CGA composite settings" +msgstr "Настройки композитного видео CGA" diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po index 5aa01a455..a4169fac9 100644 --- a/src/qt/languages/sk-SK.po +++ b/src/qt/languages/sk-SK.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "P&ozastaviť" msgid "Pause" -msgstr "" +msgstr "Pozastaviť" msgid "Re&sume" -msgstr "" +msgstr "&Obnoviť" msgid "E&xit" msgstr "&Ukončiť" @@ -57,9 +57,6 @@ msgstr "&Renderer" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Zadať veľkosť..." -msgid "F&orce 4:3 display ratio" -msgstr "&Zachovať pomer strán 4:3" +msgid "Force &4:3 display ratio" +msgstr "Zachovať pomer strán &4:3" msgid "&Window scale factor" msgstr "&Násobné zväčšenie okna" @@ -138,8 +135,8 @@ msgstr "&Celočíselné škálovanie" msgid "4:&3 Integer scale" msgstr "4:&3 Celočíselné škálovanie" -msgid "E&GA/(S)VGA settings" -msgstr "Nastavenia pre E&GA a (S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Nastavenia pre EGA a (S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Obrátiť farby" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB &farebný" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (bez hnedej)" msgid "&RGB Grayscale" msgstr "&Odtiene sivej" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Obecný RGBI farebný monitor" msgid "&Amber monitor" msgstr "&Jantárová obrazovka" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Nastavenia..." msgid "Settings..." -msgstr "" +msgstr "Nastavenia..." msgid "&Update status bar icons" msgstr "&Aktualizovať ikony na stavovom riadku" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Nastaviť" msgid "CPU:" -msgstr "" +msgstr "Procesor:" msgid "CPU type:" msgstr "Procesor:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Dynamický prekladač" msgid "CPU frame size" -msgstr "" +msgstr "Veľkosť rámcov CPU" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Väčšie rámce (menej plynulé)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Menšie rámce (plynulejšie)" msgid "Video:" msgstr "Grafika:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Grafika XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Grafika zobrazovacieho adaptéru IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Klávesnica:" msgid "Keyboard" -msgstr "" +msgstr "Klávesnica" msgid "Mouse:" msgstr "Myš:" msgid "Mouse" -msgstr "" +msgstr "Myš" msgid "Joystick:" msgstr "Joystick:" msgid "Joystick" -msgstr "" +msgstr "Joystick" msgid "Joystick 1..." msgstr "Joystick 1..." @@ -472,13 +469,13 @@ msgid "Sound card #4:" msgstr "Zvuková karta 4:" msgid "MIDI Out Device:" -msgstr "MIDI výstup:" +msgstr "Zariadenie pre MIDI výstup:" msgid "MIDI In Device:" -msgstr "MIDI vstup:" +msgstr "Zariadenie pre MIDI vstup:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI výstup" msgid "Standalone MPU-401" msgstr "Samostatný MPU-401" @@ -519,6 +516,9 @@ msgstr "Zariadenie na LPT3:" msgid "LPT4 Device:" msgstr "Zariadenie na LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA kanál ECP interného LPT portu:" + msgid "Serial port 1" msgstr "Povoliť port COM1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Disketový radič:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Radič CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Tretí radič IDE" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Štvrtý radič IDE" msgid "Hard disk" -msgstr "" +msgstr "Radič CD-ROM:" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Pevné disky:" msgid "Firmware Version" -msgstr "" +msgstr "Verzia firmvéru" msgid "&New..." msgstr "&Nový..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Magnetooptické mechaniky:" msgid "MO:" -msgstr "" +msgstr "Magnetooptické jednotky:" msgid "Removable disks:" -msgstr "" +msgstr "Vymeniteľné disky:" msgid "Removable disk drives:" -msgstr "" +msgstr "Mechaniky vymeniteľných diskov:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA rozšírenie pamäte" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA karty s pamäťou ROM" msgid "Card 1:" msgstr "Karta 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Karta 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Obecná ISA karta s pamäťou ROM" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Obecná karta ISA s dvoma pamäťami ROM" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Obecná karta ISA so štyrmi pamäťami ROM" msgid "ISABugger device" msgstr "Zariadenie ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Rýchlosť" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Vymeniteľný disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Vymeniteľný disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Obrazy vymeniteľných diskov" msgid "Image %1" -msgstr "" +msgstr "Obraz %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box nenašiel žiadne použiteľné imidž pamätí ROM.\n\nStiahnite sadu obrazov ROM a extrahujte ju do zložky \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "COM a LPT porty" msgid "Ports" -msgstr "" +msgstr "Porty" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Sériové porty:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Paralelné porty:" msgid "Storage controllers" msgstr "Radiče úložiska" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Pevné disky" msgid "Disks:" -msgstr "" +msgstr "Disky:" msgid "Floppy:" -msgstr "" +msgstr "Disketové jednotky:" msgid "Controllers:" -msgstr "" +msgstr "Radiče:" msgid "Floppy & CD-ROM drives" msgstr "Disketové a CD-ROM mechaniky" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Iné príslušenstvo" msgid "Other devices" -msgstr "" +msgstr "Iné zariadenia" msgid "Click to capture mouse" msgstr "Kliknite pre zabráni myši" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Ovládač s 2 tlačidlami" msgid "2-button flight yoke" -msgstr "" +msgstr "Letecký knipl s 2 tlačidlami" msgid "4-button gamepad" -msgstr "" +msgstr "Ovládač so 4 tlačidlami" msgid "4-button flight yoke" -msgstr "" +msgstr "Letecký knipl so 4 tlačidlami" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Letecký knipl s 2 tlačidlami a pákou" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Letecký knipl s 4 tlačidlami a pákou" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volant pre Windows 95 (3 osy, 4 tlačítka)" msgid "None" msgstr "Žiadne" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Vstavané zariadenie" msgid "&File" -msgstr "" +msgstr "&Súbor" msgid "&New machine..." -msgstr "" +msgstr "&Nový počítač..." msgid "&Check for updates..." -msgstr "" +msgstr "&Skontroluj aktualizácie..." msgid "Exit" msgstr "Ukončiť" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pozastaviť" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Stlačiť Ctrl+Alt+Delete" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Resetovať" msgid "Force shutdown" -msgstr "" +msgstr "Vynútiť vypnutie" msgid "Start" -msgstr "" +msgstr "Spustiť" msgid "Not running" -msgstr "" +msgstr "Nebeží" msgid "Running" -msgstr "" +msgstr "Beží" msgid "Paused" -msgstr "" +msgstr "Pozastavené" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Čeká" msgid "Powered Off" -msgstr "" +msgstr "Vypnuté" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n beží" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n pozostavené" + +msgid "%n waiting" +msgstr "%n čeká" + +msgid "%1 total" +msgstr "%1 celkom" + +msgid "VMs: %1" +msgstr "Virtuálnych počítačov: %1" msgid "System Directory:" -msgstr "" +msgstr "Systémový adresár:" msgid "Choose directory" -msgstr "" +msgstr "Vyberte adresár" msgid "Choose configuration file" -msgstr "" +msgstr "Vyberte konfiguračný súbor" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Konfiguračné súbory 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Čítanie konfigurácie zlyhalo" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Nie je možné otvoriť vybraný konfiguračný súbor na čítanie: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Použiť v poli vyhľadávania regulárne výrazy" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 počítač(ov) je stále aktívnych. Naozaj chcete ukončiť správcu virtuálnych počítačov?" msgid "Add new system wizard" -msgstr "" +msgstr "Sprievodca pridávaním nového systému" msgid "Introduction" -msgstr "" +msgstr "Úvod" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Tento sprievodca vám pomôže pridať nový systém do programu 86Box." msgid "New configuration" -msgstr "" +msgstr "Nová konfigurácia" msgid "Complete" -msgstr "" +msgstr "Dokončiť" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Sprievodca teraz spustí konfiguráciu nového systému." msgid "Use existing configuration" -msgstr "" +msgstr "Použiť existujúcu konfiguráciu" msgid "Type some notes here" -msgstr "" +msgstr "Tu zadajte nejaké poznámky" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Vložte obsah existujúceho konfiguračného súboru do poľa nižšie." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Načítať konfiguráciu zo súboru" msgid "System name" -msgstr "" +msgstr "Názov systému" msgid "System name:" -msgstr "" +msgstr "Názov systému:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Názov systému nesmie obsahovať určité znaky" msgid "System name already exists" -msgstr "" +msgstr "Názov systému už existuje" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Zadajte adresár pre systém" msgid "Directory does not exist" -msgstr "" +msgstr "Adresár neexistuje" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Pre tento systém bude vytvorený nový adresár vo vyššie zvolenom adresári." msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Umiestnenie systému:" msgid "System name and location" -msgstr "" +msgstr "Názov systému a umiestnenie" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Zadajte názov systému a vyberte umiestnenie" msgid "Enter the name of the system" -msgstr "" +msgstr "Zadajte názov systému" msgid "Please enter a system name" -msgstr "" +msgstr "Zadajte názov systému" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Zobrazené meno (voliteľné):" msgid "Display name:" -msgstr "" +msgstr "Zobrazené meno:" msgid "Set display name" -msgstr "" +msgstr "Nastaviť zobrazené meno" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Zadajte nové zobrazené meno (prázdne pole pre vymazanie)" msgid "Change &display name..." -msgstr "" +msgstr "Zmeniť &zobrazené meno..." msgid "Context Menu" -msgstr "" +msgstr "Kontextové menu" msgid "&Open folder..." -msgstr "" +msgstr "&Otvoriť priečinok..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Otvoriť zásobník &tlačiarne..." msgid "Set &icon..." -msgstr "" +msgstr "Nastaviť &ikonu..." msgid "Select an icon" -msgstr "" +msgstr "Vyberte ikonu" msgid "C&lone..." -msgstr "" +msgstr "K&lonovať..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuálny počítač \"%1\" (%2) bude klonovaný do:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Adresár %1 už existuje." msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "V názve nemožno použiť nasledujúce znaky: %1" msgid "Clone" -msgstr "" +msgstr "Klonovať" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Nepodarilo sa vytvoriť adresár pre klonovaný virtuálny počítač" msgid "Failed to clone VM." -msgstr "" +msgstr "Klonovanie virtuálneho počítača sa nepodarilo." msgid "Directory in use" -msgstr "" +msgstr "Adresár sa už používa" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Vybraný adresár je už používaný. Vyberte prosím iný adresár." msgid "Create directory failed" -msgstr "" +msgstr "Vytvorenie adresára sa nepodarilo" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Nie je možné vytvoriť adresár pre nový systém" msgid "Configuration write failed" -msgstr "" +msgstr "Zlyhal zápis konfigurácie" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Nepodarilo sa otvoriť konfiguračný súbor %1 na zápis" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Chyba pri pridávaní systému" msgid "Remove directory failed" -msgstr "" +msgstr "Odstránenie adresára sa nepodarilo" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Niektoré súbory v adresári zariadenia nebolo možné odstrániť. Odstráňte ich prosím ručne." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Verzia" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Je k dispozícii aktualizácia pre 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Pri kontrole aktualizácií došlo k chybe: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Je k dispozícii aktualizácia pre 86Box!" msgid "Warning" -msgstr "" +msgstr "Upozornenie" msgid "&Kill" -msgstr "" +msgstr "Vynútiť &ukončenie" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Ukončenie virtuálneho počítača môže spôsobiť stratu údajov. Ukončite ho len v prípade, ak proces programu 86Box zamrzne.\n\nNaozaj chcete ukončiť virtuálny počítač \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Odstrániť" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Naozaj chcete odstrániť virtuálny počítač \"%1\" a všetky jeho súbory? Táto akcia sa nedá vrátiť späť!" msgid "Show &config file" -msgstr "" +msgstr "Zobraziť &konfiguračný súbor" msgid "No screenshot" -msgstr "" +msgstr "Žiadny snímok obrazovky" msgid "Search" -msgstr "" +msgstr "Hľadať" msgid "Searching for VMs..." -msgstr "" +msgstr "Hľadanie virtuálnych počítačov..." msgid "Found %1" -msgstr "" +msgstr "Nájdené %1" msgid "System" -msgstr "" +msgstr "Systém" msgid "Storage" -msgstr "" +msgstr "Úložisko" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1: " msgid "No disks" -msgstr "" +msgstr "Žiadne disky" msgid "Audio" -msgstr "" +msgstr "Zvuk" msgid "Audio:" -msgstr "" +msgstr "Zvuk:" msgid "ACPI shutdown" msgstr "Vypnúť cez rozhranie ACPI" @@ -1626,9 +1632,6 @@ msgstr "Zoznam zariadení MCA:" msgid "&Tablet tool" msgstr "Nástroj pre tablety" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "O &Qt" @@ -1654,7 +1657,7 @@ msgid "&Host CD/DVD Drive (%1:)" msgstr "&Hostiteľská jednotka CD/DVD (%1:)" msgid "&Connected" -msgstr "" +msgstr "&Pripojené" msgid "Clear image &history" msgstr "Vymazanie histórie obrázkov" @@ -1663,7 +1666,7 @@ msgid "Create..." msgstr "Vytvorte..." msgid "Host CD/DVD Drive (%1)" -msgstr "Hostiteľská jednotka CD/DVD (%1)" +msgstr "Jednotka CD/DVD hostiteľa (%1)" msgid "Unknown Bus" msgstr "Neznáma zbernica" @@ -1672,13 +1675,13 @@ msgid "Null Driver" msgstr "Nulový ovládač" msgid "NIC:" -msgstr "" +msgstr "Sieťový adaptér:" msgid "NIC %1 (%2) %3" -msgstr "NIC %1 (%2) %3" +msgstr "Sieťový adaptér %1 (%2) %3" msgid "&NIC %1 (%2) %3" -msgstr "&NIC %1 (%2) %3" +msgstr "&Sieťový adaptér %1 (%2) %3" msgid "Render behavior" msgstr "Správanie pri vykresľovaní" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Sieťová karta 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "Možnosti vykresľovača..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Klávesnica PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Klávesnica AT" msgid "AX Keyboard" -msgstr "" +msgstr "Klávesnica AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Klávesnica PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Klávesnica PS/55" msgid "Keys" -msgstr "" +msgstr "Klávesy" msgid "Logitech/Microsoft Bus Mouse" msgstr "Zbernicová myš Logitech/Microsoft" @@ -1816,16 +1819,16 @@ msgid "Microsoft Bus Mouse (InPort)" msgstr "Zbernicová myš Microsoft (InPort)" msgid "Mouse Systems Serial Mouse" -msgstr "Zbernicová myš Mouse Systems" +msgstr "Sériová myš Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Zbernicová myš Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Sériová myš Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Sériová myš Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Sériová myš Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Myš PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Myš PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (sériová)" msgid "Default Baud rate" -msgstr "" +msgstr "Východná prenosová rýchlosť" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Štandardný modem kompatibilný s Hayesom" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Vstupné zariadenie MIDI" msgid "BIOS file" -msgstr "" +msgstr "Súbor BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Súbor BIOS (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Súbor BIOS (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Súbor BIOS (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Súbor BIOS (ROM 4)" msgid "BIOS address" msgstr "Adresa BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Adresa BIOS (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Adresa BIOS (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Adresa BIOS (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Adresa BIOS (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "Povolenie zápisu do pamäte ROM s rozšírením BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Povolenie zápisu do pamäte ROM s rozšírením BIOS (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Povolenie zápisu do pamäte ROM s rozšírením BIOS (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Povolenie zápisu do pamäte ROM s rozšírením BIOS (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Povolenie zápisu do pamäte ROM s rozšírením BIOS (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Začiatok lineárneho framebufferu" msgid "Address" msgstr "Adresa" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "Prerušenie sériového portu" msgid "Parallel port IRQ" -msgstr "" +msgstr "Prerušenie paralelného portu" msgid "BIOS Revision" -msgstr "Revízia systému BIOS" +msgstr "Revízia BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Verzia BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Jazyk BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Rozširujúca jednotka IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "Kazetový Basic IBM" msgid "Translate 26 -> 17" msgstr "Preložiť 26 -> 17" @@ -1954,19 +1957,19 @@ msgid "Invert colors" msgstr "Invertovanie farieb" msgid "BIOS size" -msgstr "Veľkosť systému BIOS" +msgstr "Veľkosť BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Veľkosť BIOS (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Veľkosť BIOS (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Veľkosť BIOS (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Veľkosť BIOS (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Mapa C0000-C7FFF ako UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Metóda interpolácie" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dynamické načítanie vzoriek" msgid "Reverb Output Gain" msgstr "Zosilnenie výstupu dozvuku" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Povolenie herného portu" msgid "SID Model" -msgstr "" +msgstr "Model SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Sila filtra SID" msgid "Surround module" msgstr "Surround modul" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Adresa SB" msgid "Adlib Address" -msgstr "" +msgstr "Adresa Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Použiť nastavenie EEPROM" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Zmes" msgid "Font" -msgstr "" +msgstr "Písmo" msgid "Bilinear filtering" msgstr "Bilineárne filtrovanie" msgid "Video chroma-keying" -msgstr "" +msgstr "Farebné kľúčovanie obrazu" msgid "Dithering" msgstr "Dithering" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Režim EMS" msgid "EMS Address" -msgstr "" +msgstr "Adresa EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Adresa EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Adresa EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Veľkosť pamäte EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Veľkosť pamäte EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Veľkosť pamäte EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Povoliť EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Povoliť EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Povoliť EMS 2" msgid "Address for > 2 MB" msgstr "Adresa pre > 2 MB" @@ -2371,13 +2374,13 @@ msgid "Three" msgstr "Tri" msgid "Wheel" -msgstr "Koleso" +msgstr "Koliesko" msgid "Five + Wheel" -msgstr "Päť + koleso" +msgstr "Päť s kolieskom" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Päť s 2 kolieskami" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 sériová / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Kompozitný" +msgid "True color" +msgstr "True color" + msgid "Old" msgstr "Staré" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Lineárna interpolácia" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Má druhú sadu 8x8 znakov" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Má dcérsku dosku Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternatívny monochromatický kontrast" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Šedý" msgid "Grayscale" -msgstr "" +msgstr "Odtiene šedej" msgid "Color" msgstr "Farebný" @@ -2536,25 +2542,25 @@ msgid "Bochs latest" msgstr "Bochs najnovšie" msgid "Apply overscan deltas" -msgstr "" +msgstr "Použiť delty presahu" msgid "Mono Interlaced" -msgstr "" +msgstr "Monochromatický s prekladaním" msgid "Mono Non-Interlaced" -msgstr "Mono bez prelínania" +msgstr "Monochromatický bez prekladania" msgid "Color Interlaced" -msgstr "Farebné prelínanie" +msgstr "Farebný s prekladaním" msgid "Color Non-Interlaced" -msgstr "Farba bez prelínania" +msgstr "Farebny bez prekladania" msgid "3Dfx Voodoo Graphics" msgstr "Grafický akcelerátor 3dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 zariadenia TMU)" @@ -2623,10 +2629,10 @@ msgid "Baud Rate of Passthrough" msgstr "Prenosová rýchlosť priechodu" msgid "Named Pipe (Server)" -msgstr "Pomenované potrubie (server)" +msgstr "Pomenovaná rúrka (server)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Pomenovaná rúrka (klient)" msgid "Host Serial Passthrough" msgstr "Priechod sériového portu hostiteľa" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "Vysoký vplyv na výkon" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Disk RAM (max. rýchlosť)" +msgstr "[Všeobecný] Disk RAM (max. rýchlosť)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Všeobecný] 1989 (3500 ot./m)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Všeobecný] 1992 (3600 ot./m)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Všeobecný] 1994 (4500 ot./m)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Všeobecný] 1996 (5400 ot./m)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Všeobecný] 1997 (5400 ot./m)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Všeobecný] 1998 (5400 ot./m)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Všeobecný] 2000 (7200 ot./m)" msgid "IBM 8514/A clone (ISA)" msgstr "Klon IBM 8514/A (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Výrobca" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Všeobecné rozšírenie pamäte PC/XT" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "Písma TrueType v adresári \"roms/printer/fonts\" sú potrebné na emuláciu generickej ihličkovej tlačiarne ESC/P." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Potlačiť stlačenie multimediálnych klávesov" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Vyžadovať potvrdenie pred uložením nastavení" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Vyžadovať potvrdenie pred resetovaním" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Vyžadovať potvrdenie pred ukončením" msgid "Options" -msgstr "" +msgstr "Možnosti" msgid "Model" -msgstr "" +msgstr "Model" msgid "Model:" -msgstr "" +msgstr "Model:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Inicializácia renderera Vulkan zlyhala." msgid "GLSL Error" -msgstr "" +msgstr "Chyba GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "Nebol možné načítať shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Je vyžadovaná verzia OpenGL 3.0 alebo vyššia. Aktuálna verzia GLSL je %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Nebolo možné načítať textúru: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Nebolo možné skompilovať shader:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Program nebol spojený:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Správca shaderov" msgid "Shader Configuration" -msgstr "" +msgstr "Konfigurácia shaderu" msgid "Add" -msgstr "" +msgstr "Pridať" msgid "Move up" -msgstr "" +msgstr "Posunúť vyššie" msgid "Move down" -msgstr "" +msgstr "Posunúť nižšie" msgid "Could not load file %1" -msgstr "" +msgstr "Nebolo možné možné načítať súbor %1" msgid "Key Bindings:" -msgstr "" +msgstr "Nastavenie klávesov" msgid "Action" -msgstr "" +msgstr "Akcia" msgid "Keybind" -msgstr "" +msgstr "Klávesy" msgid "Clear binding" -msgstr "" +msgstr "Vymazať nastavenia" msgid "Bind" -msgstr "" +msgstr "Nastaviť" msgid "Bind Key" -msgstr "" +msgstr "Nastaviť klávesu" msgid "Enter key combo:" -msgstr "" +msgstr "Zadajte kombináciu klávesov" msgid "Bind conflict" -msgstr "" +msgstr "Konflikt nastavení" msgid "This key combo is already in use." -msgstr "" +msgstr "Táto kombinácia klávesov je už použitá." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Stlačte Ctrl+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Stlačte Ctrl+Alt+Esc" msgid "Toggle fullscreen" -msgstr "" +msgstr "Prepnúť režim celej obrazovky" msgid "Screenshot" -msgstr "" +msgstr "Zhotoviť snímku obrazovky" msgid "Release mouse pointer" -msgstr "" +msgstr "Uvoľniť kurzor myši" msgid "Toggle pause" -msgstr "" +msgstr "Pozastaviť alebo obnoviť" msgid "Toggle mute" -msgstr "" +msgstr "Prepnúť stlmenie" msgid "Text files" -msgstr "" +msgstr "Textové súbory" msgid "ROM files" -msgstr "" +msgstr "Súbory ROM" msgid "SoundFont files" -msgstr "" +msgstr "Súbory SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Lokálny prepínač" msgid "Remote Switch" -msgstr "" +msgstr "Vzdialený prepínač" msgid "Switch:" -msgstr "" +msgstr "Prepínač:" msgid "Hub Mode" -msgstr "" +msgstr "Režim hubu" msgid "Hostname:" -msgstr "" +msgstr "Hostiteľské meno" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA pamäť RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA pamäť ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Vymazať NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Týmto sa vymažú všetky súbory NVRAM (a súvisiace súbory) virtuálneho počítača umiestnené v podadresári „nvr“. V prípade potreby budete musieť znovu nakonfigurovať nastavenia systému BIOS (a prípadne aj ďalších zariadení vo vnútri virtuálneho počítača).\n\nNaozaj chcete vymazať celý obsah NVRAM virtuálneho počítača \"%1\"?" msgid "Success" -msgstr "" +msgstr "Úspech" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Obsah NVRAM virtuálneho počítača \"%1\" bol úspešne vymazaný." -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Pri pokuse o vymazanie obsahu NVRAM virtuálneho počítača \"%1\" došlo k chybe" msgid "%1 VM Manager" -msgstr "" +msgstr "Správca virtuálnych počítačov %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n disk(ov)" msgid "Unknown Status" -msgstr "" +msgstr "Neznámy stav" msgid "No Machines Found!" -msgstr "" +msgstr "Žádné počítače nalezeny!" msgid "Check for updates on startup" -msgstr "" +msgstr "Skontroluj aktualizácie pri spustení" msgid "Unable to determine release information" -msgstr "" +msgstr "Nebolo možné zistiť informácie o vydaní" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Pri kontrole aktualizácií došlo k chybe:\n\n%1\n\nSkúste to prosím neskôr znova." msgid "Update check complete" -msgstr "" +msgstr "Kontrola aktualizácií dokončená" + +msgid "stable" +msgstr "stabilnú" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Používáte najnovšiu %1 verziu 86Boxu: %2" msgid "version" -msgstr "" +msgstr "verzia" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Práve používate verziu %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "K dispozícii je teraz verzia %1." + +msgid "You are currently running build %1." +msgstr "Práve používate build %1." + +msgid "Build %1 is now available." +msgstr "K dispozícii je teraz build %1." + +msgid "Would you like to visit the download page?" +msgstr "Chcete navštíviť stránku na stiahnutie?" msgid "Visit download page" -msgstr "" +msgstr "Navštíviť stránku na stiahnutie" msgid "Update check" -msgstr "" +msgstr "Kontrola aktualizácií" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Prebieha kontrola aktualizácií..." msgid "86Box Update" -msgstr "" +msgstr "Aktualizácia 86Box" msgid "Release notes:" -msgstr "" +msgstr "Poznámky k vydaniu:" -#~ msgid "HD Controller:" -#~ msgstr "Radič disku:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Mechaniky ZIP:" +msgid "Virtual machine crash" +msgstr "Havária virtuálneho počítača" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Proces virtuálneho počítača \"%1\" bol neočakávane ukončený s kódom ukončenia %2." -#~ msgid "ZIP images" -#~ msgstr "Obrazy ZIP diskov" +msgid "The system will not be added." +msgstr "Systém nebude pridaný." + +msgid "&Update mouse every CPU frame" +msgstr "&Aktualizovať myš pri každom rámci CPU" + +msgid "Hue" +msgstr "Odtieň" + +msgid "Saturation" +msgstr "Saturácia" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Jas" + +msgid "Sharpness" +msgstr "Ostrota" + +msgid "&CGA composite settings..." +msgstr "Nastavenia kompozitného režimu &CGA..." + +msgid "CGA composite settings" +msgstr "Nastavenia kompozitného režimu CGA" diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po index 593198ae8..47a99b915 100644 --- a/src/qt/languages/sl-SI.po +++ b/src/qt/languages/sl-SI.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Premor" msgid "Pause" -msgstr "" +msgstr "Premor" msgid "Re&sume" -msgstr "" +msgstr "&Nadaljuj" msgid "E&xit" msgstr "Iz&hod" @@ -57,9 +57,6 @@ msgstr "&Upodabljanje" msgid "&Qt (Software)" msgstr "&Qt (programsko)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (jedro 3.0)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Določi velikost..." -msgid "F&orce 4:3 display ratio" -msgstr "&Vsili razmerje zaslona 4:3" +msgid "Force &4:3 display ratio" +msgstr "Vsili razmerje zaslona &4:3" msgid "&Window scale factor" msgstr "&Faktor povečave okna" @@ -138,8 +135,8 @@ msgstr "&Celoštevilsko raztezanje" msgid "4:&3 Integer scale" msgstr "Celoštevilsko raztezanje 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "Nastavitve E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Nastavitve EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Obrni barve zaslona VGA" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "&Barvni RGB" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (brez rjave)" msgid "&RGB Grayscale" msgstr "&Sivinski RGB" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Generični RGBI barvni monitor" msgid "&Amber monitor" msgstr "&Rumeni zaslon" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Nastavitve..." msgid "Settings..." -msgstr "" +msgstr "Nastavitve..." msgid "&Update status bar icons" msgstr "&Posodabljaj ikone statusne vrstice" @@ -274,7 +271,7 @@ msgid "&Folder..." msgstr "&Mapa..." msgid "Target &framerate" -msgstr "&Ciljno št. sličic na sekundo" +msgstr "&Ciljno št. kadrov na sekundo" msgid "&Sync with video" msgstr "&Sinhroniziraj z videom" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Nastavi" msgid "CPU:" -msgstr "" +msgstr "Procesor:" msgid "CPU type:" msgstr "Vrsta procesorja:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Dinamični prevajalnik" msgid "CPU frame size" -msgstr "" +msgstr "Velikost blokov procesorja" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Večji bloki (manj gladko)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Manjši bloki (bolj gladko)" msgid "Video:" msgstr "Video:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Grafika XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Grafika prikazovalnika IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Tipkovnica:" msgid "Keyboard" -msgstr "" +msgstr "Tipkovnica" msgid "Mouse:" msgstr "Miška:" msgid "Mouse" -msgstr "" +msgstr "Miška" msgid "Joystick:" msgstr "Igralna palica:" msgid "Joystick" -msgstr "" +msgstr "Igralna palica" msgid "Joystick 1..." msgstr "Igralna palica 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Vhodna naprava MIDI:" msgid "MIDI Out:" -msgstr "" +msgstr "Izhod MIDI:" msgid "Standalone MPU-401" msgstr "Samostojen MPU-401" @@ -519,6 +516,9 @@ msgstr "Naprava LPT3:" msgid "LPT4 Device:" msgstr "Naprava LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA ECP-ja notranjega LPT-ja:" + msgid "Serial port 1" msgstr "Serijska vrata 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Disketni krmilnik:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Krmilnik CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Terciarni krmilnik IDE" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Kvartarni krmilnik IDE" msgid "Hard disk" -msgstr "" +msgstr "Trdi disk" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Trdi diski:" msgid "Firmware Version" -msgstr "" +msgstr "Različica programske opreme" msgid "&New..." msgstr "Nov..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Magnetno-optični pogoni:" msgid "MO:" -msgstr "" +msgstr "Magneto-optični:" msgid "Removable disks:" -msgstr "" +msgstr "Odstranljivi diski:" msgid "Removable disk drives:" -msgstr "" +msgstr "Odstranljivi diskovni pogoni:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Razširitev pomnilnika ISA" msgid "ISA ROM Cards" -msgstr "" +msgstr "Kartice ISA z ROM-i" msgid "Card 1:" msgstr "Kartica 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Kartica 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Generična plošča ISA z ROM-om" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Generična plošča ISA z dvema ROM-oma" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Generična plošča ISA s štirimi ROM-i" msgid "ISABugger device" msgstr "Naprava ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Hitrost" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Odstranljivi disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Odstranljivi disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Slike odstranljivih diskov" msgid "Image %1" -msgstr "" +msgstr "Slika %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box ni našel nobenih uporabnih ROM slik.\n\nProsim prenesite komplet ROM-ov in ga razširite v mapo \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Vrata (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Vrata" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Serijska vrata:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Paralelna vrata:" msgid "Storage controllers" msgstr "Krmilniki shrambe" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Trdi diski" msgid "Disks:" -msgstr "" +msgstr "Diski:" msgid "Floppy:" -msgstr "" +msgstr "Diskete:" msgid "Controllers:" -msgstr "" +msgstr "Krmilniki:" msgid "Floppy & CD-ROM drives" msgstr "Disketni in CD-ROM pogoni" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Druga periferija" msgid "Other devices" -msgstr "" +msgstr "Druge naprave" msgid "Click to capture mouse" msgstr "Kliknite za zajem miške" @@ -865,16 +865,16 @@ msgid "3-axis, 2-button joystick" msgstr "Igralna palica s 3 osmi, 2 gumboma" msgid "3-axis, 4-button joystick" -msgstr "Igralna palica z 3 osmi, 4 gumbi" +msgstr "Igralna palica s 3 osmi, 4 gumbi" msgid "4-axis, 4-button joystick" -msgstr "Igralna palica z 4 osmi, 4 gumbi" +msgstr "Igralna palica s 4 osmi, 4 gumbi" msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Igralna ploščica z 2 gumboma" msgid "2-button flight yoke" -msgstr "" +msgstr "Letalski krmilni drog z 2 gumbi" msgid "4-button gamepad" -msgstr "" +msgstr "Igralna ploščica s 4 gumbi" msgid "4-button flight yoke" -msgstr "" +msgstr "Letalski krmilni drog s 4 gumbi" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Letalski krmilni drog z 2 gumbi gumboma ročico za plin" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Letalski krmilni drog s 4 gumbi z ročico za plin" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Volan Win95 s 3 osmi, 4 gumbi" msgid "None" msgstr "Brez" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Vgrajena naprava" msgid "&File" -msgstr "" +msgstr "&Datoteka" msgid "&New machine..." -msgstr "" +msgstr "&Nova naprava..." msgid "&Check for updates..." -msgstr "" +msgstr "&Preveri obstoj posodobitev..." msgid "Exit" msgstr "Izhod" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Prekini izvajanje" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Pritisni Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Ponovni zagon" msgid "Force shutdown" -msgstr "" +msgstr "Prisilno prekini" msgid "Start" -msgstr "" +msgstr "Zaženi" msgid "Not running" -msgstr "" +msgstr "Se ne izvaja" msgid "Running" -msgstr "" +msgstr "Se izvaja" msgid "Paused" -msgstr "" +msgstr "Premor" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Čaka" msgid "Powered Off" -msgstr "" +msgstr "Izklopljena" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n se izvaja" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n v pavzi" + +msgid "%n waiting" +msgstr "%n čaka" + +msgid "%1 total" +msgstr "%1 skupno" + +msgid "VMs: %1" +msgstr "Navideznih naprav: %1" msgid "System Directory:" -msgstr "" +msgstr "Imenik sistema:" msgid "Choose directory" -msgstr "" +msgstr "Izberi imenik" msgid "Choose configuration file" -msgstr "" +msgstr "Izberi datoteko z nastavitvami" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Datoteke z nastavitvami programa 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Napaka pri branju nastavitev" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Ni bilo mogože odpreti izbrane datoteke z nastavitvami za branje: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "V iskalnem polju uporabi regularne ekspresije" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "Št. trenutno dejavnih naprav je %1. Ali vseeno želite izstopiti iz upravitelja navideznih naprav?" msgid "Add new system wizard" -msgstr "" +msgstr "Čarovnik za dodajanje novega sistema" msgid "Introduction" -msgstr "" +msgstr "Predstavitev" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "To Vam bo pomagalo dodati nov sistem v program 86Box." msgid "New configuration" -msgstr "" +msgstr "Nove nastavitve" msgid "Complete" -msgstr "" +msgstr "Dokončaj" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Čarovnik bo zdaj zagnal nastavitev novega sistema." msgid "Use existing configuration" -msgstr "" +msgstr "Uporabi obstoječe nastavitve" msgid "Type some notes here" -msgstr "" +msgstr "Tukaj vpišite nekaj opomb" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Prilepite vsebino obstoječe datoteke z nastavitvami v spodnje polje." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Naloži nastavitve iz datoteke" msgid "System name" -msgstr "" +msgstr "Ime sistema" msgid "System name:" -msgstr "" +msgstr "Ime sistema:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Ime sistema ne sme vsebovati določenih znakov" msgid "System name already exists" -msgstr "" +msgstr "Ime sistema že obstaja" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Prosimo vpišite imenik za sistem" msgid "Directory does not exist" -msgstr "" +msgstr "Imenik ne obstaja" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Nov imenik sistema bo ustvarjen v zgoraj izbranem imeniku" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Lokacija sistema:" msgid "System name and location" -msgstr "" +msgstr "Ime sistema in lokacija" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Vpišite ime sistema in izberite lokacijo" msgid "Enter the name of the system" -msgstr "" +msgstr "Vpišite ime sistema" msgid "Please enter a system name" -msgstr "" +msgstr "Prosimo, vpišite ime sistema" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Prikazano ime (neobvezno):" msgid "Display name:" -msgstr "" +msgstr "Prikazano ime:" msgid "Set display name" -msgstr "" +msgstr "Nastavi prikazano ime" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Vstavi novo prikazano ime (prazno za ponastavitev)" msgid "Change &display name..." -msgstr "" +msgstr "Spremeni &prikazano ime..." msgid "Context Menu" -msgstr "" +msgstr "Kontekstni meni" msgid "&Open folder..." -msgstr "" +msgstr "&Odpri mapo..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Odpri pladenj &tiskalnika..." msgid "Set &icon..." -msgstr "" +msgstr "Izberi &ikono" msgid "Select an icon" -msgstr "" +msgstr "Izberi ikono" msgid "C&lone..." -msgstr "" +msgstr "K&loniraj..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Navidezna naprava \"%1\" (%2) bo klonirana v:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Direktorij %1 že obstaja" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "V imenu ne smete uporabiti sledečih znakov: %1" msgid "Clone" -msgstr "" +msgstr "Kloniraj" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Napaka pri izdelavi imenika za klonirani navidezni stroj" msgid "Failed to clone VM." -msgstr "" +msgstr "Napaka pri kloniranju navidezne naprave." msgid "Directory in use" -msgstr "" +msgstr "Direktorij v uporabi" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Izbrani imenik je že v uporabi. Prosimo, izberite drug imenik." msgid "Create directory failed" -msgstr "" +msgstr "Napaka pri ustvarjanju imenika" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Napaka pri ustvarjanju imenika za nov sistem" msgid "Configuration write failed" -msgstr "" +msgstr "Napaka pri pisanju nastavitev" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Napaka pri odpiranju datoteke z nastavitvami %1 za pisanje" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Napaka pri dodajanju sistema" msgid "Remove directory failed" -msgstr "" +msgstr "Napaka pri odstranjevanju imenika" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Nekaterih datotek v imeniku naprave ni bilo mogoče izbrisati. Prosimo, izbrišite jih ročno." msgid "Build" -msgstr "" +msgstr "Kompilacija" msgid "Version" -msgstr "" +msgstr "Različica" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Posodobitev programa 86Box je na voljo: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Prišlo je do napake med preverjanjem obstoja posodobitev: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Posodobitev programa 86Box je na voljo!" msgid "Warning" -msgstr "" +msgstr "Opozorilo" msgid "&Kill" -msgstr "" +msgstr "&Prisilno končaj" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Prisilno končanje navidezne naprave lahko povzroči izgubo podatkov. To storite samo, če je proces 86Box postal neodziven.\n\nAli res želite prisilno končaiti navidzeno napravo \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "Iz&briši" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Ali res želite izbrisati navidezno napravo \"%1\" in vse njene datoteke? Preklic teka dejanja ni mogoč!" msgid "Show &config file" -msgstr "" +msgstr "Prikaži datoteko z &nastavitvami" msgid "No screenshot" -msgstr "" +msgstr "Ni zajemov zaslona" msgid "Search" -msgstr "" +msgstr "Išči" msgid "Searching for VMs..." -msgstr "" +msgstr "Iskanje navideznih naprav..." msgid "Found %1" -msgstr "" +msgstr "%1 najden" msgid "System" -msgstr "" +msgstr "Sistem" msgid "Storage" -msgstr "" +msgstr "Shramba" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1: " msgid "No disks" -msgstr "" +msgstr "Ni diskov" msgid "Audio" -msgstr "" +msgstr "Zvok" msgid "Audio:" -msgstr "" +msgstr "Zvok:" msgid "ACPI shutdown" msgstr "Zaustavitev ACPI" @@ -1626,9 +1632,6 @@ msgstr "Seznam naprav MCA:" msgid "&Tablet tool" msgstr "Orodje za tablico" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "O programu &Qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Ničelni gonilnik" msgid "NIC:" -msgstr "" +msgstr "Omrežna kartica:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1684,7 +1687,7 @@ msgid "Render behavior" msgstr "Obnašanje pri upodabljanju" msgid "Use target framerate:" -msgstr "Uporabi ciljno št. sličic na sekundo:" +msgstr "Uporabi ciljno št. kadrov na sekundo:" msgid " fps" msgstr " fps" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Omrežna kartica 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "Možnosti sistema za upodabljanje..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Tipkovnica PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Tipkovnica AT" msgid "AX Keyboard" -msgstr "" +msgstr "Tipkovnica AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Tipkovnica PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Tipkovnica PS/55" msgid "Keys" -msgstr "" +msgstr "Tipke" msgid "Logitech/Microsoft Bus Mouse" msgstr "Miška na vodilu Logitech/Microsoft" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Serijska miška Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Miška na vodilu Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Serijska miška Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Serijka miška Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Serijska miška Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Miška PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Miška PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (serijska)" msgid "Default Baud rate" -msgstr "" +msgstr "Privzeta baudna hitrost" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Standardni modem v skladen s Hayes" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Vhodna naprava MIDI" msgid "BIOS file" -msgstr "" +msgstr "Datoteka BIOS-a" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM št. 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM št. 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM št. 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Datoteka BIOS-a (ROM št. 4)" msgid "BIOS address" msgstr "Naslov BIOS-a" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Naslov BIOS-a (ROM št. 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Naslov BIOS-a (ROM št. 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Naslov BIOS-a (ROM št. 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Naslov BIOS-a (ROM št. 4)" msgid "Enable BIOS extension ROM Writes" msgstr "Omogoči zapisovanje razširitev BIOS ROM-a" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Omogoči pisanje v razširitveni ROM BIOS-a (ROM št. 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Omogoči pisanje v razširitveni ROM BIOS-a (ROM št. 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Omogoči pisanje v razširitveni ROM BIOS-a (ROM št. 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Omogoči pisanje v razširitveni ROM BIOS-a (ROM št. 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Naslov linearnega pomnilnika" msgid "Address" msgstr "Naslov" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ serijskih vrat" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ paralelnih vrat" msgid "BIOS Revision" msgstr "Revizija BIOS-a" msgid "BIOS Version" -msgstr "" +msgstr "Različica BIOS-a" msgid "BIOS Language" -msgstr "" +msgstr "Jezik BIOS-a" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Razširitvena enota IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "Kasetni BASIC IBM" msgid "Translate 26 -> 17" msgstr "Prevedi 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Velikost BIOS-a" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Velikost BIOS-a (ROM št. 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Velikost BIOS-a (ROM št. 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Velikost BIOS-a (ROM št. 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Velikost BIOS-a (ROM št. 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Preslikaj C0000-C7FFF kot UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Metoda interpolacije" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dinamično nalaganje vzorcev" msgid "Reverb Output Gain" msgstr "Ojačanje izhoda odmeva" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Omogočanje igralnih vrat" msgid "SID Model" -msgstr "" +msgstr "Model SID-a" msgid "SID Filter Strength" -msgstr "" +msgstr "Jakost filtra SID-a" msgid "Surround module" msgstr "Prostorski modul" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Naslov SB" msgid "Adlib Address" -msgstr "" +msgstr "Naslov Adlib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Uporabi nastavitve z EEPROM-a" msgid "WSS IRQ" msgstr "IRQ WSS" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Mešanica" msgid "Font" -msgstr "" +msgstr "Pisava" msgid "Bilinear filtering" msgstr "Bilinearno filtriranje" msgid "Video chroma-keying" -msgstr "" +msgstr "Barvni ključ za videoposneke" msgid "Dithering" msgstr "Barvno stresanje" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Način EMS" msgid "EMS Address" -msgstr "" +msgstr "Naslov EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Naslov EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Naslov EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Velikost pomnilnika EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Velikost pomnilnika EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Velikost pomnilnika EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Omogoči EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Omogoči EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Omogoči EMS 2" msgid "Address for > 2 MB" msgstr "Naslov za > 2 MB" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Kompozitni" +msgid "True color" +msgstr "Pravobarvni" + msgid "Old" msgstr "Stari" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Linearna interpolacija" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Ima sekundarni nabor znakov 8x8" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Ima hčerinsko ploščo Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternativni enobarvni kontrast" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Sivi" msgid "Grayscale" -msgstr "" +msgstr "Sivinski" msgid "Color" msgstr "Barvni" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs najnovejše" msgid "Apply overscan deltas" -msgstr "" +msgstr "Nanesi razlike v okvirju" msgid "Mono Interlaced" -msgstr "" +msgstr "Enobarvni s prepletanjem" msgid "Mono Non-Interlaced" msgstr "Enobarvni brez prepletanja" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo Graphics" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 enoti TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Poimenovana cev (Strežnik)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Poimenovana cev (Odjemalec)" msgid "Host Serial Passthrough" msgstr "Prepust serijskih vrat gostitelja" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "Visok učinek na hitrost delovanja" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Pomnilniški disk (največja hitrost)" +msgstr "[Generični] Pomnilniški disk (največja hitrost)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Generični] 1989 (3500 vrtlj./min.)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Generični] 1992 (3600 vrtlj./min.)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Generični] 1994 (4500 vrtlj./min.)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Generični] 1996 (5400 vrtlj./min.)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Generični] 1997 (5400 vrtlj./min.)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Generični] 1998 (5400 vrtlj./min.)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Generični] 2000 (7200 vrtlj./min.)" msgid "IBM 8514/A clone (ISA)" msgstr "Klon IBM 8514/A (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Proizvajalec" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Generična razširitev pomnilnika PC/XT" @@ -2707,10 +2713,10 @@ msgid "Options" msgstr "Možnosti" msgid "Model" -msgstr "" +msgstr "Model" msgid "Model:" -msgstr "" +msgstr "Model:" msgid "Failed to initialize Vulkan renderer." msgstr "Inicializacija upodobljevalnika Vulkan ni uspela." @@ -2752,163 +2758,199 @@ msgid "Could not load file %1" msgstr "Ni bilo mogoče naložiti datoteke %1" msgid "Key Bindings:" -msgstr "" +msgstr "Kombinacije tipk" msgid "Action" -msgstr "" +msgstr "Dejanje" msgid "Keybind" -msgstr "" +msgstr "Kombinacija" msgid "Clear binding" -msgstr "" +msgstr "Počisti kombinacijo" msgid "Bind" -msgstr "" +msgstr "Dodeli" msgid "Bind Key" -msgstr "" +msgstr "Dodeli tipko" msgid "Enter key combo:" -msgstr "" +msgstr "Vpiši kombinacijo tipk:" msgid "Bind conflict" -msgstr "" +msgstr "Konflikt med kombinacijami" msgid "This key combo is already in use." -msgstr "" +msgstr "Ta kombinacija tipk je že v uporabi." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Pošlji Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Pošlji Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Preklopi celozaslonski način" msgid "Screenshot" -msgstr "" +msgstr "Zajem zaslona" msgid "Release mouse pointer" -msgstr "" +msgstr "Izpusti kazalec miške" msgid "Toggle pause" -msgstr "" +msgstr "Preklopi pavzo" msgid "Toggle mute" -msgstr "" +msgstr "Preklopti tišino" msgid "Text files" -msgstr "" +msgstr "Datoteke z besedilom" msgid "ROM files" -msgstr "" +msgstr "Datoteke ROM" msgid "SoundFont files" -msgstr "" +msgstr "Datoteke SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Lokalno stikalo" msgid "Remote Switch" -msgstr "" +msgstr "Oddaljeno stikalo" msgid "Switch:" -msgstr "" +msgstr "Stikalo:" msgid "Hub Mode" -msgstr "" +msgstr "Način koncentratorja" msgid "Hostname:" -msgstr "" +msgstr "Ime gostitelja:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "RAM ISA:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ROM ISA:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Izbriši NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "To bo izbrisali vse datoteke NVRAM (in sorodne) navidezne naprave, ki se nahajajo v podimeniku \"nvr\". Morali boste ponovno nastaviti nastavitve BIOS-a (in verjetno tudi drugih naprav znotraj VS), če bo to potrebno.\n\nAli res želite izbrisati vso vsebino NVRAM-a navidezne naprave \"%1\"?" msgid "Success" -msgstr "" +msgstr "Uspešno" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Vsebina NVRAM-a navidezne naprave \"%1\" je bila uspešno pobrisana" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Med brisanjem vsebine NVRAM-a navidezne naprave \"%1\" je prišlo do napake" msgid "%1 VM Manager" -msgstr "" +msgstr "Upravitelj navideznih naprav %1" msgid "%n disk(s)" -msgstr "" +msgstr "Št. diskov: %n" msgid "Unknown Status" -msgstr "" +msgstr "Neznani status" msgid "No Machines Found!" -msgstr "" +msgstr "Ni bilo najdenih naprav!" msgid "Check for updates on startup" -msgstr "" +msgstr "Ob zagonu preveri obstoj posodobitev" msgid "Unable to determine release information" -msgstr "" +msgstr "Ni bilo mogoče pridobiti informacij o različici" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Med preverjanjem obstoja posodobitev je prišlo do napake:\n\n%1\n\nProsimo, poskusite znova pozneje." msgid "Update check complete" -msgstr "" +msgstr "Preverjanje obstoja posodobitev končano" + +msgid "stable" +msgstr "stabilno" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Izvajate zadnjo %1 različico programa 86Box: %2" msgid "version" -msgstr "" +msgstr "različica" msgid "build" -msgstr "" +msgstr "kompilacija" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Trenutno uporabljate različico %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Različica %1 je zdaj na voljo." + +msgid "You are currently running build %1." +msgstr "Trenutno uporabljate kompilacijo %1." + +msgid "Build %1 is now available." +msgstr "Kompilacija %1 je zdaj na voljo." + +msgid "Would you like to visit the download page?" +msgstr "Ali želite obiskati stran s prenosi?" msgid "Visit download page" -msgstr "" +msgstr "Obišči stran s prenosi" msgid "Update check" -msgstr "" +msgstr "Preveri obstoj posodobitev" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Poteka preverjanje obstoja posodobitev..." msgid "86Box Update" -msgstr "" +msgstr "Posodobitev programa 86Box" msgid "Release notes:" -msgstr "" +msgstr "Opombe različice:" -#~ msgid "HD Controller:" -#~ msgstr "Krmilnik trdega diska:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Pogoni ZIP:" +msgid "Virtual machine crash" +msgstr "Sesutje navidezne naprave" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Proces navidezne naprave \"%1\" se je nepričakovano zaključil z izhodno kodo %2." -#~ msgid "ZIP images" -#~ msgstr "ZIP slike" +msgid "The system will not be added." +msgstr "Sistem ne bo dodan." + +msgid "&Update mouse every CPU frame" +msgstr "&Posodibi stanje miške ob vsakem bloku procesorja" + +msgid "Hue" +msgstr "Hue" + +msgid "Saturation" +msgstr "Nasičenost" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Svetlost" + +msgid "Sharpness" +msgstr "Ostrina" + +msgid "&CGA composite settings..." +msgstr "Nastavitve kompozitnega načina &CGA..." + +msgid "CGA composite settings" +msgstr "Nastavitve kompozitnega načina CGA" diff --git a/src/qt/languages/sv-SE.po b/src/qt/languages/sv-SE.po index c423558d6..a0b4a0752 100644 --- a/src/qt/languages/sv-SE.po +++ b/src/qt/languages/sv-SE.po @@ -7,10 +7,10 @@ msgstr "" "X-Source-Language: en_US\n" msgid "&Action" -msgstr "" +msgstr "&Handling" msgid "&Keyboard requires capture" -msgstr "Tangentbord behöver uppfångas" +msgstr "&Tangentbord behöver uppfångas" msgid "&Right CTRL is left ALT" msgstr "&Höger CTRL är vänster ALT" @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Pausa" msgid "Pause" -msgstr "" +msgstr "&Pausa" msgid "Re&sume" -msgstr "" +msgstr "Fo&rtsätt" msgid "E&xit" msgstr "A&vsluta" @@ -57,9 +57,6 @@ msgstr "Re&nderare" msgid "&Qt (Software)" msgstr "&Qt (Mjukvara)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -67,10 +64,10 @@ msgid "&VNC" msgstr "&VNC" msgid "Specify &dimensions..." -msgstr "Ange mått..." +msgstr "Ange &mått..." -msgid "F&orce 4:3 display ratio" -msgstr "T&vinga 4:3 bildförhållande" +msgid "Force &4:3 display ratio" +msgstr "Tvinga &4:3 bildförhållande" msgid "&Window scale factor" msgstr "&Skalningsfaktor för fönster" @@ -106,7 +103,7 @@ msgid "&8x" msgstr "&8x" msgid "Fi<er method" -msgstr "Filtermetod" +msgstr "Fi<ermetod" msgid "&Nearest" msgstr "&Närmsta" @@ -115,7 +112,7 @@ msgid "&Linear" msgstr "&Linjär" msgid "Hi&DPI scaling" -msgstr "Hög&DPI-skalning" +msgstr "Hög &DPI-skalning" msgid "&Fullscreen" msgstr "&Helskärm" @@ -138,8 +135,8 @@ msgstr "&Skala till heltal" msgid "4:&3 Integer scale" msgstr "Skala till heltal i 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "E&GA/(S)VGA-inställningar" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)&VGA-inställningar" msgid "&Inverted VGA monitor" msgstr "&Inverterad VGA-skärm" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB &färg" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (utan brunt)" msgid "&RGB Grayscale" msgstr "&RGB gråskala" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Allmän RGBI färgskärm" msgid "&Amber monitor" msgstr "&Bärnstensfärgad skärm" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Inställningar..." msgid "Settings..." -msgstr "" +msgstr "Inställningar..." msgid "&Update status bar icons" msgstr "&Uppdatera statusfältets ikoner" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Konfigurera" msgid "CPU:" -msgstr "" +msgstr "Processor:" msgid "CPU type:" msgstr "Processortyp:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Dynamisk omkompilering" msgid "CPU frame size" -msgstr "" +msgstr "Ramstorlek för processor" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Större ramar (mindre smidigt)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Mindre ramar (smidigare)" msgid "Video:" msgstr "Bildskärmskort:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA-grafik" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 bildskärmsadapter" msgid "Keyboard:" -msgstr "" +msgstr "Tangentbord:" msgid "Keyboard" -msgstr "" +msgstr "Tangentbord" msgid "Mouse:" msgstr "Mus:" msgid "Mouse" -msgstr "" +msgstr "Mus" msgid "Joystick:" msgstr "Styrspak:" msgid "Joystick" -msgstr "" +msgstr "Styrspak" msgid "Joystick 1..." msgstr "Styrspak 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Enhet för MIDI-indata:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI-utgång:" msgid "Standalone MPU-401" msgstr "Fristående MPU-401" @@ -519,6 +516,9 @@ msgstr "LPT3-enhet:" msgid "LPT4 Device:" msgstr "LPT4-enhet:" +msgid "Internal LPT ECP DMA:" +msgstr "Intern LPT ECP DMA:" + msgid "Serial port 1" msgstr "Serieport 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Styrenhet för diskett:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Styrenhet för CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Tertiär IDE-kontroller" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Kvartär IDE-kontroller" msgid "Hard disk" -msgstr "" +msgstr "Hårddisk" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Hårddiskar:" msgid "Firmware Version" -msgstr "" +msgstr "Firmware-version" msgid "&New..." msgstr "&Ny..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "MO-enheter:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Flyttbara diskar:" msgid "Removable disk drives:" -msgstr "" +msgstr "Enheter för flyttbara diskar:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA minnesexpansion" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM-kort" msgid "Card 1:" msgstr "Kort 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Kort 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Allmän ISA ROM-kort" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Allmän dubbel ISA ROM-kort" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Allmän fyrdubbel ISA ROM-kort" msgid "ISABugger device" msgstr "ISABugger-enhet" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Hastighet" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Flyttbar disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Flyttbar disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Flyttbara disk-avbildningar" msgid "Image %1" -msgstr "" +msgstr "Avbildning %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box kunde inte hitta några användbara ROM-avbildningar.\n\nVänligen ladda ner en ROM-uppsättning och extrahera den till mappen \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Portar (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Portar" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Serieportar:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Parallelportar:" msgid "Storage controllers" msgstr "Styrenheter för lagring" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Hårddiskar" msgid "Disks:" -msgstr "" +msgstr "Diskar:" msgid "Floppy:" -msgstr "" +msgstr "Diskett:" msgid "Controllers:" -msgstr "" +msgstr "Styrenheter:" msgid "Floppy & CD-ROM drives" msgstr "Diskett- och CD-ROM-enheter" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Andra tillbehör" msgid "Other devices" -msgstr "" +msgstr "Andra enheter" msgid "Click to capture mouse" msgstr "Klicka för att fånga upp musen" @@ -838,7 +838,7 @@ msgid "Default" msgstr "Standard" msgid "%1 Wait state(s)" -msgstr "" +msgstr "%1 Wait state(s)" msgid "Type" msgstr "Typ" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH-pedaler" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Handkontroll(er) med två knappar" msgid "2-button flight yoke" -msgstr "" +msgstr "Styrspak med två knappar" msgid "4-button gamepad" -msgstr "" +msgstr "Handkontroll med fyra knappar" msgid "4-button flight yoke" -msgstr "" +msgstr "Styrspak med fyra knappar" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Styrspak med två knappar och gas" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Styrspak med fyra knappar och gas" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95-ratt (tre axlar, fyra knappar)" msgid "None" msgstr "Ingen" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Intern enhet" msgid "&File" -msgstr "" +msgstr "&Fil" msgid "&New machine..." -msgstr "" +msgstr "&Ny maskin..." msgid "&Check for updates..." -msgstr "" +msgstr "&Leta efter uppdateringar..." msgid "Exit" msgstr "Avsluta" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Pausa exekvering" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Tryck på Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Hård omstart" msgid "Force shutdown" -msgstr "" +msgstr "Tvinga avstängning" msgid "Start" -msgstr "" +msgstr "Starta" msgid "Not running" -msgstr "" +msgstr "Körs ej" msgid "Running" -msgstr "" +msgstr "Körs" msgid "Paused" -msgstr "" +msgstr "Pausad" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Väntar" msgid "Powered Off" -msgstr "" +msgstr "Avstängd" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n körs" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n pausad" + +msgid "%n waiting" +msgstr "%n väntar" + +msgid "%1 total" +msgstr "%1 sammanlagt" + +msgid "VMs: %1" +msgstr "VM: %1" msgid "System Directory:" -msgstr "" +msgstr "Systemmapp:" msgid "Choose directory" -msgstr "" +msgstr "Välj mapp" msgid "Choose configuration file" -msgstr "" +msgstr "Välj konfigurationsfil" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box konfigurationsfiler (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Kunde inte läsa konfiguration" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Kunde inte läsa den valda konfigurationsfilen: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Använd vanliga uttryck i sökfältet" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 maskin(er) är aktiva. Är du säker på att du vill avsluta VM-hanteraren ändå?" msgid "Add new system wizard" -msgstr "" +msgstr "Guiden Lägg till nytt system" msgid "Introduction" -msgstr "" +msgstr "Introduktion" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Detta kommer att hjälpa dig lägga till ett nytt system till 86Box." msgid "New configuration" -msgstr "" +msgstr "Ny konfiguration" msgid "Complete" -msgstr "" +msgstr "Färdig" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Guiden kommer nu starta konfigurationen för det nya systemet." msgid "Use existing configuration" -msgstr "" +msgstr "Använd befintlig konfiguration" msgid "Type some notes here" -msgstr "" +msgstr "Skriv anteckningar här" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Klistra in innehållet i den befintliga konfigurationsfilen i fältet nedanför." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Ladda konfiguration från fil" msgid "System name" -msgstr "" +msgstr "Systemnamn" msgid "System name:" -msgstr "" +msgstr "Systemnamn:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Systemnamnet kan inte innehålla vissa tecken" msgid "System name already exists" -msgstr "" +msgstr "Systemnamnet finns redan" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Välj en mapp till systemet" msgid "Directory does not exist" -msgstr "" +msgstr "Mappen finns inte" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "En ny mapp till systemet kommer att skapas i den valda mappen ovanför" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Systemplats:" msgid "System name and location" -msgstr "" +msgstr "Systemnamn och plats" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Ange namn på systemet och välj plats" msgid "Enter the name of the system" -msgstr "" +msgstr "Ange namn på systemet" msgid "Please enter a system name" -msgstr "" +msgstr "Ange ett systemnamn" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Visningsnamn (valfritt):" msgid "Display name:" -msgstr "" +msgstr "Visningsnamn:" msgid "Set display name" -msgstr "" +msgstr "Ställ in visningsnamn" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Ange nytt visningsnamn (tom för att återställa)" msgid "Change &display name..." -msgstr "" +msgstr "Ändra &visningsnamn..." msgid "Context Menu" -msgstr "" +msgstr "Innehållsmeny" msgid "&Open folder..." -msgstr "" +msgstr "&Öppna mapp..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Öppna &skrivarfack..." msgid "Set &icon..." -msgstr "" +msgstr "Ställ in &ikon..." msgid "Select an icon" -msgstr "" +msgstr "Välj en ikon" msgid "C&lone..." -msgstr "" +msgstr "K&lona..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Virtuell maskin \"%1\" (%2) kommer att klonas till:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Mapp %1 finns redan" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Du kan inte använda följande tecken i namnet: %1" msgid "Clone" -msgstr "" +msgstr "Klona" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Kunde inte skapa mapp för klonad VM" msgid "Failed to clone VM." -msgstr "" +msgstr "Kunde inte klona VM." msgid "Directory in use" -msgstr "" +msgstr "Mapp används" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Den valda mappen används redan. Välj en annan mapp." msgid "Create directory failed" -msgstr "" +msgstr "Kunde inte skapa mapp" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Kunde inte skapa mapp för nytt system" msgid "Configuration write failed" -msgstr "" +msgstr "Kunde inte skriva konfiguration" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Kunde inte skriva till konfigurationsfil på %1" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Fel vid tillägg av system" msgid "Remove directory failed" -msgstr "" +msgstr "Kunde inte ta bort mapp" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Några filer i maskinens mapp kunde inte tas bort. Ta bort de manuellt." msgid "Build" -msgstr "" +msgstr "Build" msgid "Version" -msgstr "" +msgstr "Version" + +msgid "An update to 86Box is available: %1 %2" +msgstr "En uppdatering till 86Box är tillgänglig: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Vid kontroll av uppdateringar uppstod ett fel: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "En uppdatering till 86Box är tillgänglig!" msgid "Warning" -msgstr "" +msgstr "Varning" msgid "&Kill" -msgstr "" +msgstr "&Döda" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Att döda en virtuell maskin kan orsaka dataförlust. Gör detta endast om 86Box-processen hänger sig.\n\nVill du verkligen döda virtuella maskinen \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Ta bort" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Vill du verkligen ta bort virtuella maskinen \"%1\" och alla dess filer? Denna handling kan inte ångras!" msgid "Show &config file" -msgstr "" +msgstr "Visa &konfigurationsfil" msgid "No screenshot" -msgstr "" +msgstr "Inga skärmbilder" msgid "Search" -msgstr "" +msgstr "Sök" msgid "Searching for VMs..." -msgstr "" +msgstr "Söker efter VM..." msgid "Found %1" -msgstr "" +msgstr "Hittade %1" msgid "System" -msgstr "" +msgstr "System" msgid "Storage" -msgstr "" +msgstr "Lagring" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1:" msgid "No disks" -msgstr "" +msgstr "Inga diskar" msgid "Audio" -msgstr "" +msgstr "Ljud" msgid "Audio:" -msgstr "" +msgstr "Ljud:" msgid "ACPI shutdown" msgstr "ACPI-avstängning" @@ -1626,9 +1632,6 @@ msgstr "Lista på MCA-enheter:" msgid "&Tablet tool" msgstr "Plattverktyg" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Om &Qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Tom drivrutin" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1696,7 +1699,7 @@ msgid "Synchronize with video" msgstr "Synkronisera med bild" msgid "Shaders" -msgstr "" +msgstr "Shaders" msgid "Remove" msgstr "Ta bort" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Nätverkskort #1" @@ -1792,40 +1795,40 @@ msgid "Renderer &options..." msgstr "Renderingsalternativ..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT-tangentbord" msgid "AT Keyboard" -msgstr "" +msgstr "AT-tangenbord" msgid "AX Keyboard" -msgstr "" +msgstr "AX-tangentbord" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2-tangentbord" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55-tangentbord" msgid "Keys" -msgstr "" +msgstr "Tangenter" msgid "Logitech/Microsoft Bus Mouse" -msgstr "Logitech/Microsoft-buss-mus" +msgstr "Logitech/Microsoft Bus-mus" msgid "Microsoft Bus Mouse (InPort)" -msgstr "Microsoft-buss-mus (InPort)" +msgstr "Microsoft Bus-mus (InPort)" msgid "Mouse Systems Serial Mouse" msgstr "Mouse Systems seriemus" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Mouse Systems Bus-mus" msgid "Microsoft Serial Mouse" msgstr "Microsoft seriemus" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Microsoft serie-BallPoint" msgid "Logitech Serial Mouse" msgstr "Logitech seriemus" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "PS/2-mus" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort-mus" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (serie)" msgid "Default Baud rate" -msgstr "" +msgstr "Standard Baudhastighet" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Standard Hayes-kompatibelt modem" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Indataenhet för MIDI" msgid "BIOS file" -msgstr "" +msgstr "BIOS-fil" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS-fil (ROM #1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS-fil (ROM #2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS-fil (ROM #3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS-fil (ROM #4)" msgid "BIOS address" msgstr "BIOS-adress" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS-adress (ROM #1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS-adress (ROM #2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS-adress (ROM #3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS-adress (ROM #4)" msgid "Enable BIOS extension ROM Writes" msgstr "Aktivera ROM-skrivningar för utökat BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Aktivera ROM-skrivningar för utökat BIOS (ROM #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Aktivera ROM-skrivningar för utökat BIOS (ROM #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Aktivera ROM-skrivningar för utökat BIOS (ROM #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Aktivera ROM-skrivningar för utökat BIOS (ROM #4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Linjär bas för skärmbuffert" msgid "Address" msgstr "Adress" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ för serieport" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ för parallelport" msgid "BIOS Revision" -msgstr "BIOS revision" +msgstr "BIOS-revision" msgid "BIOS Version" -msgstr "" +msgstr "BIOS-version" msgid "BIOS Language" -msgstr "" +msgstr "BIOS-språk" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161 expansionsenhet" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM Cassette Basic" msgid "Translate 26 -> 17" msgstr "Översätt 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Storlek på BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Storlek på BIOS (ROM #1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Storlek på BIOS (ROM #2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Storlek på BIOS (ROM #3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Storlek på BIOS (BIOS #4)" msgid "Map C0000-C7FFF as UMB" msgstr "Kartlägg C0000-C7FFF som UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Interpoleringsmetod" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dynamisk sampelladdning" msgid "Reverb Output Gain" msgstr "Reverb utmatningsförstärkning" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Aktivera spelport" msgid "SID Model" -msgstr "" +msgstr "SID-modell" msgid "SID Filter Strength" -msgstr "" +msgstr "SID filetstyrka" msgid "Surround module" msgstr "Sorround-modul" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Adress för SB" msgid "Adlib Address" -msgstr "" +msgstr "Adlib-adress" msgid "Use EEPROM setting" -msgstr "" +msgstr "Använd EEPROM-inställning" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Blanda" msgid "Font" -msgstr "" +msgstr "Typsnitt" msgid "Bilinear filtering" msgstr "Bilinjär filtrering" msgid "Video chroma-keying" -msgstr "" +msgstr "Video chroma-keying" msgid "Dithering" msgstr "Dithering" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "EMS-läge" msgid "EMS Address" -msgstr "" +msgstr "EMS-adress" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1-adress" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2-adress" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS minnesstorlek" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1 minnesstorlek" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2 minnesstorlek" msgid "Enable EMS" -msgstr "" +msgstr "Aktivera EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Aktivera EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Aktivera EMS 2" msgid "Address for > 2 MB" msgstr "Adress till > 2 MB" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "Fem med hjul" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Fem med två hjul" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 serie / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Komposit" +msgid "True color" +msgstr "True color" + msgid "Old" msgstr "Gammal" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Linjär interpolering" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Har sekundär 8x8 teckenuppsättning" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Har Quadcolor II dotterkort" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternativ monokrom kontrast" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Grå" msgid "Grayscale" -msgstr "" +msgstr "Gråskala" msgid "Color" msgstr "Färg" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs senaste" msgid "Apply overscan deltas" -msgstr "" +msgstr "Tillämpa delta för överskanning" msgid "Mono Interlaced" -msgstr "" +msgstr "Monokrom sammanflätad" msgid "Mono Non-Interlaced" msgstr "Ej sammanflätad monokrom" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo-grafik" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMUs)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Namngiven pipe (server)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Namngiven pipe (klient)" msgid "Host Serial Passthrough" msgstr "Värd-seriepassthrough" @@ -2713,7 +2719,7 @@ msgid "Model:" msgstr "Modell:" msgid "Failed to initialize Vulkan renderer." -msgstr "Kunde inte initialisera Vulkan-renderaren" +msgstr "Kunde inte initialisera Vulkan-renderaren." msgid "GLSL Error" msgstr "GLSL-fel" @@ -2752,163 +2758,199 @@ msgid "Could not load file %1" msgstr "Kunde inte ladda fil %1" msgid "Key Bindings:" -msgstr "" +msgstr "Tangentbindningar:" msgid "Action" -msgstr "" +msgstr "Handling" msgid "Keybind" -msgstr "" +msgstr "Tangenbindning" msgid "Clear binding" -msgstr "" +msgstr "Rensa bindningar" msgid "Bind" -msgstr "" +msgstr "Bind" msgid "Bind Key" -msgstr "" +msgstr "Bind tangent" msgid "Enter key combo:" -msgstr "" +msgstr "Ange tangentkombination:" msgid "Bind conflict" -msgstr "" +msgstr "Bindningskonflikt" msgid "This key combo is already in use." -msgstr "" +msgstr "Denna tangentkombination används redan." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Skicka Ctrl+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Skicka Ctrl+Alt+Esc" msgid "Toggle fullscreen" -msgstr "" +msgstr "Helskärm" msgid "Screenshot" -msgstr "" +msgstr "Skärmbild" msgid "Release mouse pointer" -msgstr "" +msgstr "Släpp muspekare" msgid "Toggle pause" -msgstr "" +msgstr "Pausa" msgid "Toggle mute" -msgstr "" +msgstr "Tysta" msgid "Text files" -msgstr "" +msgstr "Textfiler" msgid "ROM files" -msgstr "" +msgstr "ROM-filer" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont-filer" msgid "Local Switch" -msgstr "" +msgstr "Lokal switch" msgid "Remote Switch" -msgstr "" +msgstr "Fjärr-switch" msgid "Switch:" -msgstr "" +msgstr "Switch:" msgid "Hub Mode" -msgstr "" +msgstr "Hubb-läge" msgid "Hostname:" -msgstr "" +msgstr "Värdnamn:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Rensa NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Detta kommer att ta bort alla NVRAM och relaterade filer från den virtuella maskinen i undermappen \"nvr\". Du kommer att behöva omkonfigurera BIOS och möjligen andra enheter inuti VM om applicerbart.\n\nÄr du säker på att du vill tömma allt NVRAM-innehåll för den virtuella maskinen \"%1\"?" msgid "Success" -msgstr "" +msgstr "Lyckades" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Lyckades tömma allt NVRAM-innehåll för den virtuella maskinen \"%1\"." -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Ett fel uppstod vid försök att tömma NVRAM-innehållet för den virtuella maskinen \"%1\"." msgid "%1 VM Manager" -msgstr "" +msgstr "%1 VM-hanterare" msgid "%n disk(s)" -msgstr "" +msgstr "%n disk(ar)" msgid "Unknown Status" -msgstr "" +msgstr "Ökänd status" msgid "No Machines Found!" -msgstr "" +msgstr "Inga maskiner hittades!" msgid "Check for updates on startup" -msgstr "" +msgstr "Sök efter uppdateringar vid start" msgid "Unable to determine release information" -msgstr "" +msgstr "Kunde inte bestämma information för släpp" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Ett fel uppstod vid sökning av uppdateringar:\n\n%1\n\nFörsök igen senare." msgid "Update check complete" -msgstr "" +msgstr "Uppdateringskontroll klar" + +msgid "stable" +msgstr "stable" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Du kör den senaste %1 versionen av 86Box: %2" msgid "version" -msgstr "" +msgstr "version" msgid "build" -msgstr "" +msgstr "build" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Du kör just ny version %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Version %1 finns nu tillgänglig." + +msgid "You are currently running build %1." +msgstr "Du kör just nu build %1." + +msgid "Build %1 is now available." +msgstr "Build %1 finns nu tillgänglig." + +msgid "Would you like to visit the download page?" +msgstr "Vill du besöka nedladdningssidan?" msgid "Visit download page" -msgstr "" +msgstr "Besök nedladdningssida" msgid "Update check" -msgstr "" +msgstr "Leta efter uppdateringar" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Letar efter uppdateringar..." msgid "86Box Update" -msgstr "" +msgstr "86Box-uppdatering" msgid "Release notes:" -msgstr "" +msgstr "Information om släpp:" -#~ msgid "HD Controller:" -#~ msgstr "Styrenhet för hårddisk:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Zip-enheter:" +msgid "Virtual machine crash" +msgstr "Virtuell maskin-krasch" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Den virtuella maskinen \"%1\"s process har avslutats oväntad med kod %2." -#~ msgid "ZIP images" -#~ msgstr "Zip-avbildningar" +msgid "The system will not be added." +msgstr "Systemet kommer inte att läggas till." + +msgid "&Update mouse every CPU frame" +msgstr "&Uppdatera mus varje processorram" + +msgid "Hue" +msgstr "Färgton" + +msgid "Saturation" +msgstr "Mättnad" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Ljusstyrka" + +msgid "Sharpness" +msgstr "Skärpa" + +msgid "&CGA composite settings..." +msgstr "Inställningar för &CGA-kompositläget..." + +msgid "CGA composite settings" +msgstr "Inställningar för CGA-kompositläget" diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po index 986689463..4a9109b13 100644 --- a/src/qt/languages/tr-TR.po +++ b/src/qt/languages/tr-TR.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Duraklat" msgid "Pause" -msgstr "" +msgstr "Duraklat" msgid "Re&sume" -msgstr "" +msgstr "Dev&am et" msgid "E&xit" msgstr "&Çıkış yap" @@ -57,9 +57,6 @@ msgstr "Derley&ici" msgid "&Qt (Software)" msgstr "&Qt (Yazılım bazlı)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL bazlı)" - msgid "Open&GL (3.0 Core)" msgstr "OpenG&L (Sürüm 3.0)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "Pencere &boyutunu belirle..." -msgid "F&orce 4:3 display ratio" -msgstr "4:3 görüntü oranına &zorla" +msgid "Force &4:3 display ratio" +msgstr "&4:3 görüntü oranına zorla" msgid "&Window scale factor" msgstr "Pencere &boyutu ölçeği" @@ -138,7 +135,7 @@ msgstr "Tam &sayı ölçeklemesi" msgid "4:&3 Integer scale" msgstr "Tam sayı ölçeklemesi (4:&3)" -msgid "E&GA/(S)VGA settings" +msgid "EGA/(S)&VGA settings" msgstr "EGA/&(S)VGA ayarları" msgid "&Inverted VGA monitor" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB (&Çok renkli)" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (kahverengi yok)" msgid "&RGB Grayscale" msgstr "RGB (&Gri tonlu)" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Genel RGBI renkli monitör" msgid "&Amber monitor" msgstr "&Kehribar monitör" @@ -187,7 +184,7 @@ msgid "Change contrast for &monochrome display" msgstr "Gri to&nlu görüntü için kontrastı değiştir" msgid "&Media" -msgstr "&Medya" +msgstr "&Ortam" msgid "&Tools" msgstr "&Araçlar" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Ayarlar..." msgid "Settings..." -msgstr "" +msgstr "Ayarlar..." msgid "&Update status bar icons" msgstr "Durum &çubuğu simgelerini güncelle" @@ -232,13 +229,13 @@ msgid "&About 86Box..." msgstr "&86Box hakkında..." msgid "&New image..." -msgstr "&Yeni imaj oluştur..." +msgstr "&Yeni görüntü oluştur..." msgid "&Existing image..." -msgstr "&İmaj seç..." +msgstr "&Görüntü seç..." msgid "Existing image (&Write-protected)..." -msgstr "İmaj &seç (Yazma korumalı)..." +msgstr "Görüntü &seç (Yazma korumalı)..." msgid "&Record" msgstr "&Kaydet" @@ -256,7 +253,7 @@ msgid "E&ject" msgstr "&Çıkar" msgid "&Image..." -msgstr "&İmaj seç..." +msgstr "&Görüntü seç..." msgid "E&xport to 86F..." msgstr "&86F olarak kaydet..." @@ -265,10 +262,10 @@ msgid "&Mute" msgstr "&Sessize al" msgid "E&mpty" -msgstr "İmajı &çıkar" +msgstr "Görüntüyü &çıkar" msgid "Reload previous image" -msgstr "Önceki imajı yeniden seç" +msgstr "Önceki görüntüyü yeniden seç" msgid "&Folder..." msgstr "&Klasör seç..." @@ -310,7 +307,7 @@ msgid "Sound Gain" msgstr "Ses Artışı" msgid "New Image" -msgstr "Yeni imaj" +msgstr "Yeni görüntü" msgid "Settings" msgstr "Ayarlar" @@ -355,16 +352,16 @@ msgid "Lock to this size" msgstr "Bu boyuta kilitle" msgid "Machine type:" -msgstr "Makine türü:" +msgstr "Anakart türü:" msgid "Machine:" -msgstr "Makine:" +msgstr "Anakart:" msgid "Configure" msgstr "Ayarla" msgid "CPU:" -msgstr "" +msgstr "İşlemci:" msgid "CPU type:" msgstr "İşlemci türü:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Dinamik Derleyici" msgid "CPU frame size" -msgstr "" +msgstr "İşlemci kare boyutu" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Daha büyük kareler (daha az akıcı)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Daha küçük kareler (daha akıcı)" msgid "Video:" msgstr "Ekran kartı:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA Grafikleri" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 Display Adapter Grafikleri" msgid "Keyboard:" -msgstr "" +msgstr "Klavye:" msgid "Keyboard" -msgstr "" +msgstr "Klavye" msgid "Mouse:" msgstr "Fare:" msgid "Mouse" -msgstr "" +msgstr "Fare" msgid "Joystick:" msgstr "Oyun Kolu:" msgid "Joystick" -msgstr "" +msgstr "Oyun Kolu" msgid "Joystick 1..." msgstr "1. Oyun Kolu..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI Giriş Cihazı:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI Çıkış:" msgid "Standalone MPU-401" msgstr "Bağımsız MPU-401" @@ -490,7 +487,7 @@ msgid "FM synth driver" msgstr "FM sentez sürücüsü" msgid "Nuked (more accurate)" -msgstr "Nuked (daha doğru)" +msgstr "Nuked (daha hassas)" msgid "YMFM (faster)" msgstr "YMFM (daha hızlı)" @@ -519,44 +516,47 @@ msgstr "LPT3 Cihazı:" msgid "LPT4 Device:" msgstr "LPT4 Cihazı:" +msgid "Internal LPT ECP DMA:" +msgstr "Dahili LPT ECP DMA'sı:" + msgid "Serial port 1" -msgstr "1. Seri Port" +msgstr "1. Seri bağlantı noktası" msgid "Serial port 2" -msgstr "2. Seri Port" +msgstr "2. Seri bağlantı noktası" msgid "Serial port 3" -msgstr "3. Seri Port" +msgstr "3. Seri bağlantı noktası" msgid "Serial port 4" -msgstr "4. Seri Port" +msgstr "4. Seri bağlantı noktası" msgid "Parallel port 1" -msgstr "1. Paralel Port" +msgstr "1. Paralel bağlantı noktası" msgid "Parallel port 2" -msgstr "2. Paralel Port" +msgstr "2. Paralel bağlantı noktası" msgid "Parallel port 3" -msgstr "3. Paralel Port" +msgstr "3. Paralel bağlantı noktası" msgid "Parallel port 4" -msgstr "4. Paralel Port" +msgstr "4. Paralel bağlantı noktası" msgid "FD Controller:" msgstr "Disket Denetleyicisi:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ROM Denetleyicisi:" msgid "Tertiary IDE Controller" -msgstr "Üçlü IDE Denetleyici" +msgstr "Üçüncül IDE Denetleyicisi" msgid "Quaternary IDE Controller" -msgstr "Dörtlü IDE Denetleyici" +msgstr "Dördüncül IDE Denetleyicisi" msgid "Hard disk" -msgstr "" +msgstr "Sabit disk" msgid "SCSI" msgstr "SCSI" @@ -577,16 +577,16 @@ msgid "Cassette" msgstr "Kaset" msgid "Hard disks:" -msgstr "Hard diskler:" +msgstr "Sabit diskler:" msgid "Firmware Version" -msgstr "" +msgstr "Bellenim Sürümü" msgid "&New..." -msgstr "&Yeni imaj oluştur" +msgstr "&Yeni görüntü oluştur" msgid "&Existing..." -msgstr "&İmaj dosyası seç" +msgstr "&Görüntü dosyası seç" msgid "&Remove" msgstr "&Kaldır" @@ -619,7 +619,7 @@ msgid "Type:" msgstr "Tür:" msgid "Image Format:" -msgstr "İmaj Türü:" +msgstr "Görüntü Biçimi:" msgid "Block Size:" msgstr "Blok boyutu:" @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "MO sürücüleri:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Çıkarılabilir diskler:" msgid "Removable disk drives:" -msgstr "" +msgstr "Çıkarılabilir disk sürücüleri:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA Bellek Artırıcı" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM Kartları" msgid "Card 1:" msgstr "Kart 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Kart 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Genel ISA ROM Kartı" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Genel Çift ISA ROM Kartı" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Genel Dörtlü ISA ROM Kartı" msgid "ISABugger device" msgstr "ISABugger cihazı" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Hız" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Çıkarılabilir disk %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Çıkarılabilir disk %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Çıkarılabilir disk görüntüleri" msgid "Image %1" -msgstr "" +msgstr "Görüntü %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box kullanılabilir hiçbir ROM dosyası bulamadı.\n\nLütfen bir ROM seti indirip \"roms\" klasörüne çıkarın." @@ -733,16 +733,16 @@ msgid "Off" msgstr "Kapalı" msgid "All images" -msgstr "Tüm imajlar" +msgstr "Tüm görüntüler" msgid "Basic sector images" -msgstr "Basit sektör imajları" +msgstr "Basit sektör görüntüleri" msgid "Surface images" -msgstr "Yüzey imajları" +msgstr "Yüzey görüntüleri" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "\"%hs\" makinesi roms/machines klasöründe gerekli ROM dosyalarının mevcut olmaması nedeniyle kullanılamıyor. Kullanılabilen başka bir makineye geçiş yapılacaktır." +msgstr "\"%hs\" anakartı roms/machines klasöründe gerekli ROM dosyalarının mevcut olmaması nedeniyle kullanılamıyor. Kullanılabilen başka bir anakarta geçiş yapılacaktır." msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." msgstr "\"%hs\" ekran kartı roms/video klasöründe gerekli ROM dosyalarının mevcut olmaması nedeniyle kullanılamıyor. Kullanılabilen başka bir ekran kartına geçiş yapılacaktır." @@ -754,7 +754,7 @@ msgid "Device \"%hs\" is not available due to missing ROMs. Ignoring the device. msgstr "\"%hs\" cihazı gerekli ROM dosyalarının mevcut olmaması nedeniyle kullanılamıyor. Bu cihaz yok sayılacaktır." msgid "Machine" -msgstr "Makine" +msgstr "Anakart" msgid "Display" msgstr "Görüntü" @@ -769,31 +769,31 @@ msgid "Network" msgstr "Ağ" msgid "Ports (COM & LPT)" -msgstr "Portlar (COM & LPT)" +msgstr "Bağlantı noktaları (COM & LPT)" msgid "Ports" -msgstr "" +msgstr "Bağlantı noktaları" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Seri bağlantı noktaları:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Paralel bağlantı noktaları:" msgid "Storage controllers" msgstr "Depolama denetleyicileri" msgid "Hard disks" -msgstr "Hard diskler" +msgstr "Sabit diskler" msgid "Disks:" -msgstr "" +msgstr "Diskler:" msgid "Floppy:" -msgstr "" +msgstr "Disket:" msgid "Controllers:" -msgstr "" +msgstr "Denetleyiciler:" msgid "Floppy & CD-ROM drives" msgstr "Disket & CD-ROM sürücüleri" @@ -802,10 +802,10 @@ msgid "Other removable devices" msgstr "Diğer kaldırılabilir cihazlar" msgid "Other peripherals" -msgstr "Diğer cihazlar" +msgstr "Diğer çevre birimleri" msgid "Other devices" -msgstr "" +msgstr "Diğer cihazlar" msgid "Click to capture mouse" msgstr "Farenin yakalanması için tıklayın" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2 düğmeli oyun tablası" msgid "2-button flight yoke" -msgstr "" +msgstr "2 düğmeli uçuş dümeni" msgid "4-button gamepad" -msgstr "" +msgstr "4 düğmeli oyun tablası" msgid "4-button flight yoke" -msgstr "" +msgstr "4 düğmeli uçuş dümeni" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2 düğmeli, gaz kollu uçuş dümeni" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4 düğmeli, gaz kollu uçuş dümeni" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95 direksiyonu (3 eksenli, 4 düğmeli)" msgid "None" msgstr "Hiçbiri" @@ -919,10 +919,10 @@ msgid "&Floppy %1 (%2): %3" msgstr "&Disket %1 (%2): %3" msgid "Advanced sector images" -msgstr "Gelişmiş sektör imajları" +msgstr "Gelişmiş sektör görüntüleri" msgid "Flux images" -msgstr "Flux imajları" +msgstr "Flux görüntüleri" msgid "Are you sure you want to hard reset the emulated machine?" msgstr "Makineyi yeniden başlamaya zorlamak istediğinizden emin misiniz?" @@ -943,7 +943,7 @@ msgid "&MO %1 (%2): %3" msgstr "&MO %1 (%2): %3" msgid "MO images" -msgstr "MO imajları" +msgstr "MO görüntüleri" msgid "Welcome to 86Box!" msgstr "86Box'a hoşgeldiniz!" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Dahili cihaz" msgid "&File" -msgstr "" +msgstr "&Dosya" msgid "&New machine..." -msgstr "" +msgstr "&Yeni makine..." msgid "&Check for updates..." -msgstr "" +msgstr "&Güncelleştirmeleri kontrol et..." msgid "Exit" msgstr "Çıkış yap" @@ -1012,7 +1012,7 @@ msgid "Don't reset" msgstr "Hayır" msgid "CD-ROM images" -msgstr "CD-ROM imajları" +msgstr "CD-ROM görüntüleri" msgid "%1 Device Configuration" msgstr "%1 Cihaz Yapılandırması" @@ -1039,7 +1039,7 @@ msgid "C&assette: %1" msgstr "K&aset: %1" msgid "Cassette images" -msgstr "Kaset imajları" +msgstr "Kaset görüntüleri" msgid "Cartridge %1: %2" msgstr "Kartuş %1: %2" @@ -1048,7 +1048,7 @@ msgid "Car&tridge %1: %2" msgstr "Kar&tuş %1: %2" msgid "Cartridge images" -msgstr "Kartuş imajları" +msgstr "Kartuş görüntüleri" msgid "Resume execution" msgstr "Çalıştırmayı sürdür" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Çalıştırmayı duraklat" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Ctrl+Alt+Del tuşlarına bas" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Makineyi yeniden başlat" msgid "Force shutdown" -msgstr "" +msgstr "Kapatmaya zorla" msgid "Start" -msgstr "" +msgstr "Başlat" msgid "Not running" -msgstr "" +msgstr "Çalışmıyor" msgid "Running" -msgstr "" +msgstr "Çalışıyor" msgid "Paused" -msgstr "" +msgstr "Duraklatıldı" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Bekliyor" msgid "Powered Off" -msgstr "" +msgstr "Kapalı" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "Çalışan %n" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "Duraklatılmış %n" + +msgid "%n waiting" +msgstr "Bekleyen %n" + +msgid "%1 total" +msgstr "Toplam %1" + +msgid "VMs: %1" +msgstr "VM sayısı: %1" msgid "System Directory:" -msgstr "" +msgstr "Sistem Dizini:" msgid "Choose directory" -msgstr "" +msgstr "Dizin seç:" msgid "Choose configuration file" -msgstr "" +msgstr "Yapılandırma dosyası seç" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box yapılandırma dosyaları (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Yapılandırma okuması başarısız" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Seçili yapılandırma dosyası okunmak için açılamıyor: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Arama kutusunda düzenli ifadeler kullan" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 makine şu anda aktif. Yine de VM yöneticisinden çıkmak istediğinize emin misiniz?" msgid "Add new system wizard" -msgstr "" +msgstr "Yeni sistem ekleme sihirbazı" msgid "Introduction" -msgstr "" +msgstr "Giriş" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Bu sihirbaz 86Box'a yeni bir sistem eklemenizde yardımcı olacaktır." msgid "New configuration" -msgstr "" +msgstr "Yeni yapılandırma" msgid "Complete" -msgstr "" +msgstr "Tamamlandı" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Sihirbaz şimdi yeni sistemin yapılandırmasını başlatacak." msgid "Use existing configuration" -msgstr "" +msgstr "Var olan yapılandırma kullan" msgid "Type some notes here" -msgstr "" +msgstr "Buraya not alın" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Var olan yapılandırma dosyasının içeriklerini aşağıdaki kutuya yapıştırınız." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Dosyadan yapılandırma yükle" msgid "System name" -msgstr "" +msgstr "Sistem adı" msgid "System name:" -msgstr "" +msgstr "Sistem adı:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Sistem adı belirli karakterleri içeremez" msgid "System name already exists" -msgstr "" +msgstr "Sistem adı zaten var" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Lütfen sistem için bir dizin girin" msgid "Directory does not exist" -msgstr "" +msgstr "Dizin yok" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Sistem için yeni bir dizin yukarıda seçili dizinde oluşturulacak" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Sistem yeri:" msgid "System name and location" -msgstr "" +msgstr "Sistem adı ve yeri:" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Sistemin adını girin ve yerini seçin" msgid "Enter the name of the system" -msgstr "" +msgstr "Sistemin adını girin" msgid "Please enter a system name" -msgstr "" +msgstr "Lütfen bir sistem adı girin" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Görüntü adı (isteğe bağlı)" msgid "Display name:" -msgstr "" +msgstr "Görüntü adı:" msgid "Set display name" -msgstr "" +msgstr "Görüntü adını ayarla" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Yeni görünü adını girin (sıfırlamak için boş bırakın)" msgid "Change &display name..." -msgstr "" +msgstr "Görüntü adını &değiştirin" msgid "Context Menu" -msgstr "" +msgstr "Bağlam Menüsü" msgid "&Open folder..." -msgstr "" +msgstr "Klas&örü aç..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Yazıcı te&psisini aç..." msgid "Set &icon..." -msgstr "" +msgstr "S&imge seç..." msgid "Select an icon" -msgstr "" +msgstr "Bir simge seç" msgid "C&lone..." -msgstr "" +msgstr "K&lonla..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Sanal makine \"%1\" (%2) şuraya klonlanacaktır:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Dizin &1 zaten var" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "İsimde şu karakterleri kullanamazsınız: %1" msgid "Clone" -msgstr "" +msgstr "Klonla" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Klonlanmış VM için dizin oluşturulamadı" msgid "Failed to clone VM." -msgstr "" +msgstr "VM klonlanamadı" msgid "Directory in use" -msgstr "" +msgstr "Dizin kullanımda" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Seçili dizin zaten kullanımda. Lütfen farklı bir dizin seçiniz." msgid "Create directory failed" -msgstr "" +msgstr "Dizin oluşturulamadı" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Yeni sistem için dizin oluşturulamadı" msgid "Configuration write failed" -msgstr "" +msgstr "Yapılandırmaya yazma başarısız" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Yapılandırma dosyası %1 yazma için açılamıyor" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Sistem eklenirken hata oluştu" msgid "Remove directory failed" -msgstr "" +msgstr "Dizin kaldırılamadı" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Makinenin dizinindeki bazı dosyalar silinemedi. Lütfen bu dosyaları elle siliniz." msgid "Build" -msgstr "" +msgstr "Yapı" msgid "Version" -msgstr "" +msgstr "Sürüm" + +msgid "An update to 86Box is available: %1 %2" +msgstr "86Box için bir güncelleme bulunmakta: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Güncellemeler kontrol edilirken bir hata oluştu: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "86Box için bir güncelleme mevcut!" msgid "Warning" -msgstr "" +msgstr "Uyarı" msgid "&Kill" -msgstr "" +msgstr "Durmaya &zorla" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Bir sanal makineyi durmaya zorlamak veri kaybına yol açabilir. Bunu sadece 86Box işlemi takılı kalırsa uygulayın.\n\nGerçekten \"%1\" adlı sanal makineyi durmaya zorlamak istiyor musunuz?" msgid "&Delete" -msgstr "" +msgstr "&Sil" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Gerçekten \"%1\" adlı sanal makineyi tüm dosyalarıyla birlikte silmek istiyor musunuz? Bu eylem geri alınamaz!" msgid "Show &config file" -msgstr "" +msgstr "Yap&ılandırma dosyasını göster" msgid "No screenshot" -msgstr "" +msgstr "Ekran görüntüsü yok" msgid "Search" -msgstr "" +msgstr "Ara" msgid "Searching for VMs..." -msgstr "" +msgstr "VM'ler aranıyor..." msgid "Found %1" -msgstr "" +msgstr "%1 bulundu" msgid "System" -msgstr "" +msgstr "Sistem" msgid "Storage" -msgstr "" +msgstr "Depolama" msgid "Disk %1: " -msgstr "" +msgstr "Disk %1: " msgid "No disks" -msgstr "" +msgstr "Disk yok" msgid "Audio" -msgstr "" +msgstr "Ses" msgid "Audio:" -msgstr "" +msgstr "Ses:" msgid "ACPI shutdown" msgstr "Makineyi ACPI kullanarak kapat" @@ -1336,7 +1342,7 @@ msgid "ACP&I shutdown" msgstr "Makineyi ACP&I kullanarak kapat" msgid "Hard disk (%1)" -msgstr "Hard disk (%1)" +msgstr "Sabit disk (%1)" msgid "MFM/RLL or ESDI CD-ROM drives never existed" msgstr "MFM/RLL veya ESDI CD-ROM sürücüleri hiçbir zaman kullanılmamıştır" @@ -1348,19 +1354,19 @@ msgid "Custom (large)..." msgstr "Diğer (büyük)..." msgid "Add New Hard Disk" -msgstr "Yeni Hard Disk İmajı Oluştur" +msgstr "Yeni Sabit Disk Görüntüsü Oluştur" msgid "Add Existing Hard Disk" -msgstr "Var Olan Hard Disk İmajı Ekleme" +msgstr "Var Olan Sabit Disk Görüntüsü Ekleme" msgid "HDI disk images cannot be larger than 4 GB." -msgstr "HDI imajları 4 GB boyutundan daha büyük olamaz." +msgstr "HDI görüntüleri 4 GB boyutundan daha büyük olamaz." msgid "Disk images cannot be larger than 127 GB." -msgstr "Disk imajları 127 GB boyutundan daha büyük olamaz." +msgstr "Disk görüntüleri 127 GB boyutundan daha büyük olamaz." msgid "Hard disk images" -msgstr "Hard disk imajları" +msgstr "Sabit disk görüntüleri" msgid "Unable to read file" msgstr "Dosya okunamıyor" @@ -1369,16 +1375,16 @@ msgid "Unable to write file" msgstr "Dosyanın üzerine yazılamıyor" msgid "HDI or HDX images with a sector size other than 512 are not supported." -msgstr "512 dışında sektör boyutu olan HDI ve HDX imajları desteklenmemektedir." +msgstr "512 dışında sektör boyutu olan HDI ve HDX görüntüleri desteklenmemektedir." msgid "Disk image file already exists" -msgstr "Bu imaj dosyası zaten mevcuttur" +msgstr "Bu görüntü dosyası zaten mevcuttur" msgid "Please specify a valid file name." msgstr "Lütfen geçerli bir dosya ismi belirleyin." msgid "Disk image created" -msgstr "Disk imajı oluşturuldu" +msgstr "Disk görüntüsü oluşturuldu" msgid "Make sure the file exists and is readable." msgstr "Dosyanın var olduğuna ve okunabildiğine emin olun." @@ -1387,7 +1393,7 @@ msgid "Make sure the file is being saved to a writable directory." msgstr "Dosyanın erişilebilir bir klasöre kaydedildiğinden emin olun." msgid "Disk image too large" -msgstr "Disk imajı çok büyük" +msgstr "Disk görüntüsü çok büyük" msgid "Remember to partition and format the newly-created drive." msgstr "Yeni oluşturulan diskte bölümler oluşturmayı ve bu bölümleri biçimlendirmeyi unutmayın." @@ -1396,7 +1402,7 @@ msgid "The selected file will be overwritten. Are you sure you want to use it?" msgstr "Seçili dosyanın üzerine yazılacaktır. Bu dosyayı kullanmak istediğinizden emin misiniz?" msgid "Unsupported disk image" -msgstr "Desteklenmeyen disk imajı" +msgstr "Desteklenmeyen disk görüntüsü" msgid "Overwrite" msgstr "Üzerine yaz" @@ -1405,13 +1411,13 @@ msgid "Don't overwrite" msgstr "Üzerine yazma" msgid "Raw image" -msgstr "Ham imaj" +msgstr "Ham görüntü" msgid "HDI image" -msgstr "HDI imajı" +msgstr "HDI görüntüsü" msgid "HDX image" -msgstr "HDX imajı" +msgstr "HDX görüntüsü" msgid "Fixed-size VHD" msgstr "Sabit boyutlu VHD" @@ -1426,13 +1432,13 @@ msgid "(N/A)" msgstr "(yok)" msgid "Raw image (.img)" -msgstr "Ham imaj (.img)" +msgstr "Ham görüntü (.img)" msgid "HDI image (.hdi)" -msgstr "HDI imajı (.hdi)" +msgstr "HDI görüntüsü (.hdi)" msgid "HDX image (.hdx)" -msgstr "HDX imajı (.hdx)" +msgstr "HDX görüntüsü (.hdx)" msgid "Fixed-size VHD (.vhd)" msgstr "Sabit boyutlu VHD (.vhd)" @@ -1456,7 +1462,7 @@ msgid "Select the parent VHD" msgstr "Ana VHD dosyasını seçin" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "Bu, farklandırmış imaj dosyası oluşturulduktan sonra ana imaj dosyasında bir değişiklik yapıldığı anlamına geliyor olabilir.\n\nBu durum ayrıca imaj dosyalarının kopyalanmasından, yerlerinin değiştirilmesinden veya dosyaları oluşturan programdaki bir hatadan dolayı da meydana gelmiş olabilir.\n\nZaman damgalarını düzeltmek ister misiniz?" +msgstr "Bu, farklandırmış görüntü dosyası oluşturulduktan sonra ana görüntü dosyasında bir değişiklik yapıldığı anlamına geliyor olabilir.\n\nBu durum ayrıca görüntü dosyalarının kopyalanmasından, yerlerinin değiştirilmesinden veya dosyaları oluşturan programdaki bir hatadan dolayı da meydana gelmiş olabilir.\n\nZaman damgalarını düzeltmek ister misiniz?" msgid "Parent and child disk timestamps do not match" msgstr "Ana ve ek disklerin zaman damgaları uyuşmuyor" @@ -1579,7 +1585,7 @@ msgid "Mouse sensitivity:" msgstr "Fare hassasiyeti:" msgid "Select media images from program working directory" -msgstr "Medya imajlarını programın çalışma dizininden seç" +msgstr "Medya görüntülerini programın çalışma dizininden seç" msgid "PIT mode:" msgstr "PIT modu:" @@ -1626,9 +1632,6 @@ msgstr "MCA cihazlarının listesi:" msgid "&Tablet tool" msgstr "Tablet aracı" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "&Qt hakkında" @@ -1657,7 +1660,7 @@ msgid "&Connected" msgstr "&Bağlı" msgid "Clear image &history" -msgstr "İmaj geçmişini temizle" +msgstr "Görüntü geçmişini temizle" msgid "Create..." msgstr "Oluştur..." @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Null sürücü" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "1. Ağ Kartı" @@ -1777,70 +1780,70 @@ msgid "Novell NetWare 2.x Key Card" msgstr "Novell NetWare 2.x Anahtar Kartı" msgid "Serial port passthrough 1" -msgstr "1. Seri Port geçişi" +msgstr "1. Seri bağlantı noktası geçişi" msgid "Serial port passthrough 2" -msgstr "2. Seri Port geçişi" +msgstr "2. Seri bağlantı noktası geçişi" msgid "Serial port passthrough 3" -msgstr "3. Seri Port geçişi" +msgstr "3. Seri bağlantı noktası geçişi" msgid "Serial port passthrough 4" -msgstr "4. Seri Port geçişi" +msgstr "4. Seri bağlantı noktası geçişi" msgid "Renderer &options..." msgstr "Derleyici seçenekleri..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT Klavyesi" msgid "AT Keyboard" -msgstr "" +msgstr "AT Klavyesi" msgid "AX Keyboard" -msgstr "" +msgstr "AX Klavyesi" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2 Klavyesi" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55 Klavyesi" msgid "Keys" -msgstr "" +msgstr "Keys" msgid "Logitech/Microsoft Bus Mouse" -msgstr "Logitech/Microsoft Bus Fare" +msgstr "Logitech/Microsoft Bus Faresi" msgid "Microsoft Bus Mouse (InPort)" -msgstr "Microsoft Bus Fare (InPort)" +msgstr "Microsoft Bus Faresi (InPort)" msgid "Mouse Systems Serial Mouse" -msgstr "Mouse Systems Seri Fare" +msgstr "Mouse Systems Seri Faresi" msgid "Mouse Systems Bus Mouse" -msgstr "Mouse Systems Bus Fare" +msgstr "Mouse Systems Bus Faresi" msgid "Microsoft Serial Mouse" -msgstr "Microsoft Seri Fare" +msgstr "Microsoft Seri Faresi" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Microsoft Seri BallPoint" msgid "Logitech Serial Mouse" -msgstr "Logitech Seri Fare" +msgstr "Logitech Seri Faresi" msgid "PS/2 Mouse" -msgstr "PS/2 fare" +msgstr "PS/2 Faresi" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort Faresi" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (seri)" msgid "Default Baud rate" -msgstr "" +msgstr "Varsayılan Baud hızı" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Standart Hayes Uyumlu Modem" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "MIDI Giriş Cihazı" msgid "BIOS file" -msgstr "" +msgstr "BIOS dosyası" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS dosyası (ROM #1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS dosyası (ROM #2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS dosyası (ROM #3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS dosyası (ROM #4)" msgid "BIOS address" -msgstr "BIOS Adresi" +msgstr "BIOS adresi" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS adresi (ROM #1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS adresi (ROM #2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS adresi (ROM #3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS adresi (ROM #4)" msgid "Enable BIOS extension ROM Writes" msgstr "BIOS uzantı ROM yazımlarını etkinleştir" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "BIOS uzantı ROM yazımlarını etkinleştir (ROM #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "BIOS uzantı ROM yazımlarını etkinleştir (ROM #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "BIOS uzantı ROM yazımlarını etkinleştir (ROM #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "BIOS uzantı ROM yazımlarını etkinleştir (ROM #4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Doğrusal çerçeve arabelleği baz adresi" msgid "Address" msgstr "Adres" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "Seri bağlantı noktası IRQ'su" msgid "Parallel port IRQ" -msgstr "" +msgstr "Paralel bağlantı noktası IRQ'su" msgid "BIOS Revision" -msgstr "BIOS Sürümü" +msgstr "BIOS Revizyonu" msgid "BIOS Version" -msgstr "" +msgstr "BIOS Sürümü" msgid "BIOS Language" -msgstr "" +msgstr "BIOS Dili" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161 Genişletme Ünitesi" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM Kaset BASIC" msgid "Translate 26 -> 17" msgstr "26 -> 17 olarak çevir" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "BIOS boyutu" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOS boyutu (ROM #1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOS boyutu (ROM #2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOS boyutu (ROM #3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOS boyutu (ROM #4)" msgid "Map C0000-C7FFF as UMB" msgstr "C0000-C7FFF'yi UMB olarak eşle" @@ -2041,10 +2044,10 @@ msgid "Reverb Level" msgstr "Yankı Seviyesi" msgid "Interpolation Method" -msgstr "İnterpolasyon Yöntemi" +msgstr "Enterpolasyon Yöntemi" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Dinamik Kesit Yüklemesi" msgid "Reverb Output Gain" msgstr "Yankı Çıkış Sesi Artışı" @@ -2062,7 +2065,7 @@ msgid "Buttons" msgstr "Düğmeler" msgid "Serial Port" -msgstr "Seri Port" +msgstr "Seri Bağlantı Noktası" msgid "RTS toggle" msgstr "RTS ayarı" @@ -2083,7 +2086,7 @@ msgid "MAC Address" msgstr "MAC Adresi" msgid "MAC Address OUI" -msgstr "MAC Adresinin OUI'ı" +msgstr "MAC Adresinin OUI'si" msgid "Enable BIOS" msgstr "BIOS'u Etkinleştir" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Gameport'ı etkinleştir" msgid "SID Model" -msgstr "" +msgstr "SID Modeli" msgid "SID Filter Strength" -msgstr "" +msgstr "SID Filtre Gücü" msgid "Surround module" msgstr "Surround modülü" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "SB adresi" msgid "Adlib Address" -msgstr "" +msgstr "AdLib adresi" msgid "Use EEPROM setting" -msgstr "" +msgstr "EEPROM ayarını kullan" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,16 +2245,16 @@ msgid "Blend" msgstr "Karışım" msgid "Font" -msgstr "" +msgstr "Yazı tipi" msgid "Bilinear filtering" -msgstr "Bilineer filtreleme" +msgstr "Çift doğrusal filtreleme" msgid "Video chroma-keying" -msgstr "" +msgstr "Video renk anahtarlanması" msgid "Dithering" -msgstr "Dithering" +msgstr "Titreklik" msgid "Enable NMI for CGA emulation" msgstr "CGA öykünmesi için NMI'yi etkinleştir" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "EMS modu" msgid "EMS Address" -msgstr "" +msgstr "EMS adresi" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1 adresi" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2 adresi" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS bellek büyüklüğü" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1 bellek büyüklüğü" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2 bellek büyüklüğü" msgid "Enable EMS" -msgstr "" +msgstr "EMS'yi etkinleştir" msgid "Enable EMS 1" -msgstr "" +msgstr "EMS 1'i etkinleştir" msgid "Enable EMS 2" -msgstr "" +msgstr "EMS 2'yi etkinleştir" msgid "Address for > 2 MB" msgstr "> 2 MB için adres" @@ -2374,10 +2377,10 @@ msgid "Wheel" msgstr "Tekerlek" msgid "Five + Wheel" -msgstr "Beş +Tekerlek" +msgstr "Beş + Tekerlek" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Beş + 2 Tekerlek" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 Seri / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Kompozit" +msgid "True color" +msgstr "Gerçek renk" + msgid "Old" msgstr "Eski" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Doğrusal interpolasyon" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "İkincil 8x8 karakter seti var" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Quadcolor II yankartı var" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Alternatif tek renkli kontrast" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Gri" msgid "Grayscale" -msgstr "" +msgstr "Gri tonlu" msgid "Color" msgstr "Renk" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs'un en son sürümü" msgid "Apply overscan deltas" -msgstr "" +msgstr "Aşırı tarama deltalarını uygula" msgid "Mono Interlaced" -msgstr "" +msgstr "Tek Renkli (Geçiş Taramalı)" msgid "Mono Non-Interlaced" msgstr "Tek Renkli (Geçiş Taramasız)" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo Grafikleri" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU)" @@ -2626,13 +2632,13 @@ msgid "Named Pipe (Server)" msgstr "Adlandırılmış Boru (Sunucu)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Adlandırılmış Boru (İstemci)" msgid "Host Serial Passthrough" msgstr "Ana Sistem Seri Geçişi" msgid "E&ject %1" -msgstr "%1 imajını &çıkar" +msgstr "%1 görüntüsünü &çıkar" msgid "&Unmute" msgstr "&Sesi aç" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "Üretici" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "Genel PC/XT Bellek Artırıcı" @@ -2752,163 +2758,199 @@ msgid "Could not load file %1" msgstr "%1 dosyası yüklenemedi" msgid "Key Bindings:" -msgstr "" +msgstr "Tuş Bağlamaları" msgid "Action" -msgstr "" +msgstr "Eylem" msgid "Keybind" -msgstr "" +msgstr "Tuş bağlaması" msgid "Clear binding" -msgstr "" +msgstr "Bağlamayı sil" msgid "Bind" -msgstr "" +msgstr "Bağla" msgid "Bind Key" -msgstr "" +msgstr "Tuş Bağla" msgid "Enter key combo:" -msgstr "" +msgstr "Tuş kombinasyonunu girin:" msgid "Bind conflict" -msgstr "" +msgstr "Bağlama çakışması" msgid "This key combo is already in use." -msgstr "" +msgstr "Bu tuş kombinasyonu zaten kullanılıyor." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Control+Alt+Del gönder" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Control+Alt+Escape gönder" msgid "Toggle fullscreen" -msgstr "" +msgstr "Tam ekran modunu ayarla" msgid "Screenshot" -msgstr "" +msgstr "Ekran görüntüsü" msgid "Release mouse pointer" -msgstr "" +msgstr "Fare imlecini serbest bırak" msgid "Toggle pause" -msgstr "" +msgstr "Duraklamayı ayarla" msgid "Toggle mute" -msgstr "" +msgstr "Sessize almayı ayarla" msgid "Text files" -msgstr "" +msgstr "Metin dosyaları" msgid "ROM files" -msgstr "" +msgstr "ROM dosyaları" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont dosyaları" msgid "Local Switch" -msgstr "" +msgstr "Yerel Switch" msgid "Remote Switch" -msgstr "" +msgstr "Uzak Switch" msgid "Switch:" -msgstr "" +msgstr "Switch:" msgid "Hub Mode" -msgstr "" +msgstr "Hub Modu" msgid "Hostname:" -msgstr "" +msgstr "Ana bilgisayar adı" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "NVRAM'i te&mizle" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Bu işlem, sanal makinenin \"nvr\" altdizininde bulunan tüm NVRAM (ve ilişkili) dosyalarını silecektir. Eğer uygulanabilir ise, Anakartın BIOS'unu (ve muhtemelen VM içindeki diğer cihazları) yeniden yapılandırmanız gerekecektir.\n\nSanal makinenin tüm NVRAM içeriğini silmek istediğinizden emin misiniz?" msgid "Success" -msgstr "" +msgstr "İşlem başarılı" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "\"%1\" adlı sanal makinenin NVRAM içeriği başarıyla silindi" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "\"%1\" adlı sanal makinenin NVRAM içeriği silinmeye çalışırken hata oluştu" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 VM Yöneticisi" msgid "%n disk(s)" -msgstr "" +msgstr "%n disk" msgid "Unknown Status" -msgstr "" +msgstr "Bilinmeyen Durum" msgid "No Machines Found!" -msgstr "" +msgstr "Sanal Makine Bulunamadı!" msgid "Check for updates on startup" -msgstr "" +msgstr "Başlangıçta güncellemeleri kontrol et" msgid "Unable to determine release information" -msgstr "" +msgstr "Sürüm bilgisi belirlenemiyor" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Güncellemeler kontrol edilirken bir hata oluştu:\n\n%1\n\nLütfen tekrar deneyin." msgid "Update check complete" -msgstr "" +msgstr "Güncelleme kontrolü tamamlandı" + +msgid "stable" +msgstr "kararlı" + +msgid "beta" +msgstr "beta" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Şu anda 86Box'ın en yeni %1 sürümünü kullanıyorsunuz: %2" msgid "version" -msgstr "" +msgstr "sürüm" msgid "build" -msgstr "" +msgstr "yapı" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Şu anda %1 sürümünü kullanıyorsunuz." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Sürüm %1 şimdi mevcut." + +msgid "You are currently running build %1." +msgstr "Şu anda %1 numaralı yapıyı kullanıyorsunuz." + +msgid "Build %1 is now available." +msgstr "Yapı %1 şimdi mevcut." + +msgid "Would you like to visit the download page?" +msgstr "İndirme sayfasını ziyaret etmek ister misiniz?" msgid "Visit download page" -msgstr "" +msgstr "İndirme sayfasını ziyaret et" msgid "Update check" -msgstr "" +msgstr "Güncelleme kontrolü" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Güncellemeler kontrol ediliyor..." msgid "86Box Update" -msgstr "" +msgstr "86Box Güncellemesi" msgid "Release notes:" -msgstr "" +msgstr "Sürüm notları:" -#~ msgid "HD Controller:" -#~ msgstr "Hard Disk Denetleyicisi:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP sürücüleri:" +msgid "Virtual machine crash" +msgstr "Sanal makine çöktü" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "\"%1\" adlı sanal makinenin işlemi beklenmedik bir şekilde çıkış kodu %2 ile sona erdi." -#~ msgid "ZIP images" -#~ msgstr "ZIP imajları" +msgid "The system will not be added." +msgstr "Sistem eklenmeyecek." + +msgid "&Update mouse every CPU frame" +msgstr "Her CPU karesi ile fareyi güncelle" + +msgid "Hue" +msgstr "Renk tonu" + +msgid "Saturation" +msgstr "Doygunluk" + +msgid "Contrast" +msgstr "Kontrast" + +msgid "Brightness" +msgstr "Parlaklık" + +msgid "Sharpness" +msgstr "Keskinlik" + +msgid "&CGA composite settings..." +msgstr "&CGA kompozit modunun ayarları..." + +msgid "CGA composite settings" +msgstr "CGA kompozit modunun ayarları" diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po index 799fa07b7..dfe8d9d42 100644 --- a/src/qt/languages/uk-UA.po +++ b/src/qt/languages/uk-UA.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "&Пауза" msgid "Pause" -msgstr "" +msgstr "Пауза" msgid "Re&sume" -msgstr "" +msgstr "В&ідновити" msgid "E&xit" msgstr "&Вихід" @@ -57,9 +57,6 @@ msgstr "&Рендеринг" msgid "&Qt (Software)" msgstr "&Qt (Software)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "&Вказати розміри..." -msgid "F&orce 4:3 display ratio" -msgstr "&Встановити відношення сторін 4:3" +msgid "Force &4:3 display ratio" +msgstr "Встановити відношення сторін &4:3" msgid "&Window scale factor" msgstr "&Масштаб вікна" @@ -138,8 +135,8 @@ msgstr "&Цілісночисленне масштабування" msgid "4:&3 Integer scale" msgstr "Цілісночисленне масштабування 4:&3" -msgid "E&GA/(S)VGA settings" -msgstr "Налаштування E&GA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Налаштування EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "&Інвертувати кольори VGA" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB &кольоровий" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (без коричневого)" msgid "&RGB Grayscale" msgstr "&RGB монохромний" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Стандартний кольоровий монітор RGBI" msgid "&Amber monitor" msgstr "&Бурштиновий відтінок" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Налаштування машини..." msgid "Settings..." -msgstr "" +msgstr "Налаштування машини..." msgid "&Update status bar icons" msgstr "&Обновлення значків рядка стану" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Налаштування" msgid "CPU:" -msgstr "" +msgstr "ЦП:" msgid "CPU type:" msgstr "Тип ЦП:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Динамічний рекомпілятор" msgid "CPU frame size" -msgstr "" +msgstr "Розмір кадру ЦП" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Великі кадри (менш плавні)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Менші кадри (більш плавні)" msgid "Video:" msgstr "Відеокарта:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Прискорювач XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 Display Adapter Graphics" msgid "Keyboard:" -msgstr "" +msgstr "Клавіатура:" msgid "Keyboard" -msgstr "" +msgstr "Клавіатура" msgid "Mouse:" msgstr "Миша:" msgid "Mouse" -msgstr "" +msgstr "Миша" msgid "Joystick:" msgstr "Джойстик:" msgid "Joystick" -msgstr "" +msgstr "Джойстик" msgid "Joystick 1..." msgstr "Джойстик 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI In при-ій:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI Out:" msgid "Standalone MPU-401" msgstr "Окремий MPU-401" @@ -519,6 +516,9 @@ msgstr "Пристрій LPT3:" msgid "LPT4 Device:" msgstr "Пристрій LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "DMA ECP вбудованого LPT:" + msgid "Serial port 1" msgstr "Послідов. порт COM1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Контролер FD:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Контролер CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Третинний IDE контролер" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Четвертинний IDE контролер" msgid "Hard disk" -msgstr "" +msgstr "Жорсткий диск" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Жорсткі диски:" msgid "Firmware Version" -msgstr "" +msgstr "Версія прошивки" msgid "&New..." msgstr "&Створити..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Магнітооптичні дисководи:" msgid "MO:" -msgstr "" +msgstr "Дисководи MO:" msgid "Removable disks:" -msgstr "" +msgstr "Знімні диски:" msgid "Removable disk drives:" -msgstr "" +msgstr "Дисководи знімних дисків:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Карта розширення пам'яті (ISA)" msgid "ISA ROM Cards" -msgstr "" +msgstr "Карти ПЗУ ISA" msgid "Card 1:" msgstr "Карта 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Карта 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Стандартна плата ПЗУ ISA" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Стандартна плата на 2 ПЗУ ISA" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Стандартна плата на 4 ПЗУ ISA" msgid "ISABugger device" msgstr "Пристрій ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Швидкість" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Знімний диск %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "&Знімний диск %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Образи знімних дисків" msgid "Image %1" -msgstr "" +msgstr "Образ %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box не зміг знайти жодного відповідного для використання файлу з ПЗУ.\n\nБудь ласка завантажте набір ПЗУ і витягніть його в каталог \"roms\"." @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Порти (COM и LPT)" msgid "Ports" -msgstr "" +msgstr "Порти" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Послідовні порти:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Паралельні порти:" msgid "Storage controllers" msgstr "Контролери дисків" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Жорсткі диски" msgid "Disks:" -msgstr "" +msgstr "Диски:" msgid "Floppy:" -msgstr "" +msgstr "Дисководи:" msgid "Controllers:" -msgstr "" +msgstr "Контролери:" msgid "Floppy & CD-ROM drives" msgstr "Гнучкі диски і CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Інша периферія" msgid "Other devices" -msgstr "" +msgstr "Інші пристрої" msgid "Click to capture mouse" msgstr "Клацніть мишею для захвату курсора" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Педалі" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Система управління польотом Thrustmaster" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Система управління кермом" msgid "2-button gamepad(s)" -msgstr "" +msgstr "4-кнопковий геймпад" msgid "2-button flight yoke" -msgstr "" +msgstr "2-кнопковий flight yoke" msgid "4-button gamepad" -msgstr "" +msgstr "4-кнопковий геймпад" msgid "4-button flight yoke" -msgstr "" +msgstr "4-кнопковий flight yoke" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2-кнопковий flight yoke з дроселем" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4-кнопковий flight yoke з дроселем" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Кермо Win95 (3-осьове, 4-кнопкове)" msgid "None" msgstr "Ні" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Вбудований пристрій" msgid "&File" -msgstr "" +msgstr "&Файл" msgid "&New machine..." -msgstr "" +msgstr "&Нова машина..." msgid "&Check for updates..." -msgstr "" +msgstr "&Перевірити оновлення..." msgid "Exit" msgstr "Вихід" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Призупинити виконання" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Натиснути Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Холодне перезавантаження" msgid "Force shutdown" -msgstr "" +msgstr "Примусове завершення роботи" msgid "Start" -msgstr "" +msgstr "Пуск" msgid "Not running" -msgstr "" +msgstr "Не працює" msgid "Running" -msgstr "" +msgstr "Працює" msgid "Paused" -msgstr "" +msgstr "Призупинено" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Очікування" msgid "Powered Off" -msgstr "" +msgstr "Вимкнено" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n працює" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n призупинено" + +msgid "%n waiting" +msgstr "%n очікує" + +msgid "%1 total" +msgstr "всього %1" + +msgid "VMs: %1" +msgstr "Машин: %1" msgid "System Directory:" -msgstr "" +msgstr "Системна папка:" msgid "Choose directory" -msgstr "" +msgstr "Вибрати папку" msgid "Choose configuration file" -msgstr "" +msgstr "Вибрати файл конфігурації" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Файли конфігурації 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Збій під час читання конфігурації" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Неможливо відкрити вибраний файл конфігурації для читання: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Використовувати регулярні вирази в полі пошуку" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 машина(и) наразі активна(і). Ви впевнені, що все одно хочете вийти з менеджера віртуальної машини?" msgid "Add new system wizard" -msgstr "" +msgstr "Майстер додавання нової системи" msgid "Introduction" -msgstr "" +msgstr "Вступ" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Це допоможе вам додати нову систему в 86Box." msgid "New configuration" -msgstr "" +msgstr "Нова конфігурація" msgid "Complete" -msgstr "" +msgstr "Завершено" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Майстер тепер запустить конфігурацію для нової системи." msgid "Use existing configuration" -msgstr "" +msgstr "Використовувати існуючу конфігурацію" msgid "Type some notes here" -msgstr "" +msgstr "Введіть тут кілька нотаток" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Вставте вміст існуючого файлу конфігурації в поле нижче." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Завантажити конфігурацію з файлу" msgid "System name" -msgstr "" +msgstr "Назва системи" msgid "System name:" -msgstr "" +msgstr "Назва системи:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Назва системи не може містити певні символи" msgid "System name already exists" -msgstr "" +msgstr "Назва системи вже існує" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Будь ласка, введіть папку для системи" msgid "Directory does not exist" -msgstr "" +msgstr "Папка не існує" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Нова папка для системи буде створена у вибраній папці вище" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Розташування системи:" msgid "System name and location" -msgstr "" +msgstr "Назва системи та розташування" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Введіть назву системи та виберіть розташування" msgid "Enter the name of the system" -msgstr "" +msgstr "Введіть назву системи" msgid "Please enter a system name" -msgstr "" +msgstr "Будь ласка, введіть назву системи" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Відображуване ім'я (необов'язково):" msgid "Display name:" -msgstr "" +msgstr "Відображуване ім'я:" msgid "Set display name" -msgstr "" +msgstr "Встановити відображуване ім'я" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Введіть нове відображуване ім'я (порожнє, щоб скинути)" msgid "Change &display name..." -msgstr "" +msgstr "Змінити &відображуване ім'я..." msgid "Context Menu" -msgstr "" +msgstr "Контекстне меню" msgid "&Open folder..." -msgstr "" +msgstr "&Відкрити папку..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Відкрити папку &принтера..." msgid "Set &icon..." -msgstr "" +msgstr "Встановити &значок..." msgid "Select an icon" -msgstr "" +msgstr "Виберіть значок" msgid "C&lone..." -msgstr "" +msgstr "К&лонувати..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Віртуальна машина \"%1\" (%2) буде клонована в:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Папка %1 вже існує" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Ви не можете використовувати наступні символи в імені: %1" msgid "Clone" -msgstr "" +msgstr "Клонувати" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Не вдалося створити папку для клонованої віртуальної машини" msgid "Failed to clone VM." -msgstr "" +msgstr "Не вдалося клонувати віртуальну машину." msgid "Directory in use" -msgstr "" +msgstr "Папка використовується" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Вибрана папка вже використовується. Будь ласка, виберіть іншу папку." msgid "Create directory failed" -msgstr "" +msgstr "Не вдалося створити папку" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Неможливо створити папку для нової системи" msgid "Configuration write failed" -msgstr "" +msgstr "Не вдалося записати файл конфігурації" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Неможливо відкрити файл конфігурації в %1 для запису" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Помилка додавання системи" msgid "Remove directory failed" -msgstr "" +msgstr "Збій під час видалення папки" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Деякі файли в папці машини неможливо видалити. Будь ласка, видаліть їх вручну." msgid "Build" -msgstr "" +msgstr "Збірка" msgid "Version" -msgstr "" +msgstr "Версія" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Доступне оновлення для 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Під час перевірки оновлень сталася помилка: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Доступне оновлення для 86Box!" msgid "Warning" -msgstr "" +msgstr "Увага" msgid "&Kill" -msgstr "" +msgstr "&Завершити процес" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Примусове завершення процесу віртуальної машини може призвести до втрати даних. Робіть це тільки в тому випадку, якщо процес 86Box завис.\n\nВи дійсно хочете примусово завершити процес віртуальної машини \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "&Видалити" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Ви дійсно хочете видалити віртуальну машину \"%1\" і всі її файли? Цю дію не можна скасувати!" msgid "Show &config file" -msgstr "" +msgstr "Показати файл &конфігурації" msgid "No screenshot" -msgstr "" +msgstr "Немає скріншоту" msgid "Search" -msgstr "" +msgstr "Пошук" msgid "Searching for VMs..." -msgstr "" +msgstr "Пошук віртуальних машин..." msgid "Found %1" -msgstr "" +msgstr "Знайдено %1" msgid "System" -msgstr "" +msgstr "Система" msgid "Storage" -msgstr "" +msgstr "Диски" msgid "Disk %1: " -msgstr "" +msgstr "Диск %1: " msgid "No disks" -msgstr "" +msgstr "Немає дисків" msgid "Audio" -msgstr "" +msgstr "Аудіо" msgid "Audio:" -msgstr "" +msgstr "Аудіо:" msgid "ACPI shutdown" msgstr "Сигнал завершення ACPI" @@ -1456,10 +1462,7 @@ msgid "Select the parent VHD" msgstr "Виберіть батьківський VHD" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "" -"Це може означати, що батьківський образ був змінений після того, як було створено диференційований образ.\n\nЦе також може статися, якщо файли зображення були переміщені або скопійовані, або через помилку в програмі, що створила цей диск.\n" -" \n" -"Ви хочете виправити тимчасові позначки?" +msgstr "Це може означати, що батьківський образ був змінений після того, як було створено диференційований образ.\n\nЦе також може статися, якщо файли зображення були переміщені або скопійовані, або через помилку в програмі, що створила цей диск.\n\nВи хочете виправити тимчасові позначки?" msgid "Parent and child disk timestamps do not match" msgstr "Тимчасові мітки батьківського та дочірнього дисків не співпадають" @@ -1629,9 +1632,6 @@ msgstr "Список пристроїв MCA:" msgid "&Tablet tool" msgstr "Інструмент для планшета" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "Про &Qt" @@ -1675,7 +1675,7 @@ msgid "Null Driver" msgstr "Нульовий драйвер" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1747,7 +1747,7 @@ msgid "MiB" msgstr "МіБ" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Мережева карта 1" @@ -1795,22 +1795,22 @@ msgid "Renderer &options..." msgstr "Параметри рендерингу..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Клавіатура PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Клавіатура AT" msgid "AX Keyboard" -msgstr "" +msgstr "Клавіатура AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Клавіатура PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Клавіатура PS/55" msgid "Keys" -msgstr "" +msgstr "Клавіші" msgid "Logitech/Microsoft Bus Mouse" msgstr "Шинна миша Logitech/Microsoft" @@ -1822,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Послідовна миша Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Шинна миша Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Послідовна миша Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Послідовна миша Microsoft BallPoint" msgid "Logitech Serial Mouse" msgstr "Послідовна миша Logitech" @@ -1837,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Миша PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Миша PS/2 QuickPort" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (послідовна)" msgid "Default Baud rate" -msgstr "" +msgstr "Швидкість передачі даних за замовчуванням" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Стандартний модем, сумісний зі стандартом Hayes" @@ -1870,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Пристрій введення MIDI" msgid "BIOS file" -msgstr "" +msgstr "Файл BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Файл BIOS (ПЗУ #1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Файл BIOS (ПЗУ #2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Файл BIOS (ПЗУ #3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Файл BIOS (ПЗУ #4)" msgid "BIOS address" msgstr "Адреса BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Адреса BIOS (ПЗУ #1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Адреса BIOS (ПЗУ #2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Адреса BIOS (ПЗУ #3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Адреса BIOS (ПЗУ #4)" msgid "Enable BIOS extension ROM Writes" msgstr "Увімкнути розширення BIOS Записи в ПЗУ" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Увімкнути розширення BIOS Записи в ПЗУ (ПЗУ #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Увімкнути розширення BIOS Записи в ПЗУ (ПЗУ #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Увімкнути розширення BIOS Записи в ПЗУ (ПЗУ #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Увімкнути розширення BIOS Записи в ПЗУ (ПЗУ #4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Лінійний фреймбуфер" msgid "Address" msgstr "Адреса" @@ -1924,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ послідовного порту" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ паралельного порту" msgid "BIOS Revision" msgstr "Ревізія BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Версія BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Мова BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Блок розширення IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "Касетний бейсік IBM" msgid "Translate 26 -> 17" msgstr "Перекладіть 26 -> 17" @@ -1960,16 +1960,16 @@ msgid "BIOS size" msgstr "Розмір BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Розмір BIOS (ПЗУ 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Розмір BIOS (ПЗУ 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Розмір BIOS (ПЗУ 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Розмір BIOS (ПЗУ 4)" msgid "Map C0000-C7FFF as UMB" msgstr "Зіставлення C0000-C7FFF як UMB" @@ -2047,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Метод інтерполяції" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Динамічне завантаження семплів" msgid "Reverb Output Gain" msgstr "Посилення виходу реверберації" @@ -2137,10 +2137,10 @@ msgid "Enable Game port" msgstr "Увімкнути ігровий порт" msgid "SID Model" -msgstr "" +msgstr "Модель SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Сила фільтра SID" msgid "Surround module" msgstr "Модуль об'ємного звучання" @@ -2155,10 +2155,10 @@ msgid "SB Address" msgstr "Адреса SB" msgid "Adlib Address" -msgstr "" +msgstr "Адреса AdLib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Використовувати налаштування EEPROM" msgid "WSS IRQ" msgstr "IRQ WSS" @@ -2245,13 +2245,13 @@ msgid "Blend" msgstr "Суміш" msgid "Font" -msgstr "" +msgstr "Шрифт" msgid "Bilinear filtering" msgstr "Білінійна фільтрація" msgid "Video chroma-keying" -msgstr "" +msgstr "Відео хромакеїнг" msgid "Dithering" msgstr "Дизеринг" @@ -2296,31 +2296,31 @@ msgid "EMS mode" msgstr "Режим EMS" msgid "EMS Address" -msgstr "" +msgstr "Адреса EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Адреса EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Адреса EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Розмір пам'яті EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Розмір пам'яті EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Розмір пам'яті EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Увімкнути EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Увімкнути EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Увімкнути EMS 2" msgid "Address for > 2 MB" msgstr "Адреса для > 2 МБ" @@ -2380,7 +2380,7 @@ msgid "Five + Wheel" msgstr "П'ять + колесо" msgid "Five + 2 Wheels" -msgstr "" +msgstr "П'ять + 2 колеса" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 послідовна / SMT3(R)V" @@ -2445,6 +2445,9 @@ msgstr "256 КБ" msgid "Composite" msgstr "Композитний" +msgid "True color" +msgstr "True Color" + msgid "Old" msgstr "Старий" @@ -2479,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Лінійна інтерполяція" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Вторинний набір символів 8x8" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Дочірня плата Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Альтернативний монохромний контраст" msgid "128 KB" msgstr "128 КБ" @@ -2521,7 +2524,7 @@ msgid "Gray" msgstr "Сірий" msgid "Grayscale" -msgstr "" +msgstr "Монохромний" msgid "Color" msgstr "Кольоровий" @@ -2539,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs останній" msgid "Apply overscan deltas" -msgstr "" +msgstr "Застосувати дельти вильотів розгортки" msgid "Mono Interlaced" -msgstr "" +msgstr "Монохромний інтерлейсний" msgid "Mono Non-Interlaced" msgstr "Монохромний неінтерлейсний" @@ -2557,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Прискорювач 3Dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU)" @@ -2629,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Іменований пайп (сервер)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Іменований пайп (клієнт)" msgid "Host Serial Passthrough" msgstr "Пропуск послідовного порту хоста" @@ -2647,28 +2650,28 @@ msgid "High performance impact" msgstr "Високий вплив на продуктивність" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] Диск оперативної пам'яті (макс. швидкість)" +msgstr "[Стандартний] Диск оперативної пам'яті (макс. швидкість)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Стандартний] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Стандартний] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Стандартний] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Стандартний] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Стандартний] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Стандартний] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Стандартний] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" msgstr "Клон IBM 8514/A (ISA)" @@ -2695,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "Шрифти TrueType у каталозі \"roms/printer/fonts\" потрібні для емуляції загального матричного принтера Generic ESC/P." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Перехоплювати мультимедійні клавіші" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Запитувати підтвердження перед збереженням налаштувань" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Запитувати підтвердження перед холодним перезавантаженням" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Запитувати підтвердження перед виходом" msgid "Options" -msgstr "" +msgstr "Параметри" msgid "Model" -msgstr "" +msgstr "Модель" msgid "Model:" -msgstr "" +msgstr "Модель:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Не вдалося ініціалізувати рендеринг Vulkan." msgid "GLSL Error" -msgstr "" +msgstr "Помилка GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "Не вдалося завантажити шейдер: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Потрібна OpenGL версії 3.0 або вище. Поточна версія GLSL %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Не вдалося завантажити текстуру: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Не вдалося скомпілювати шейдер:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Не вдалося скомпонувати шейдер:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Управління шейдерами" msgid "Shader Configuration" -msgstr "" +msgstr "Конфігурація шейдера" msgid "Add" -msgstr "" +msgstr "Додати" msgid "Move up" -msgstr "" +msgstr "Вгору" msgid "Move down" -msgstr "" +msgstr "Вниз" msgid "Could not load file %1" -msgstr "" +msgstr "Не вдалося завантажити файл %1" msgid "Key Bindings:" -msgstr "" +msgstr "Прив'язки клавіш:" msgid "Action" -msgstr "" +msgstr "Дія" msgid "Keybind" -msgstr "" +msgstr "Прив'язка клавіш" msgid "Clear binding" -msgstr "" +msgstr "Очистити прив'язку" msgid "Bind" -msgstr "" +msgstr "Прив'язка" msgid "Bind Key" -msgstr "" +msgstr "Прив'язати клавішу" msgid "Enter key combo:" -msgstr "" +msgstr "Введіть комбінацію клавіш:" msgid "Bind conflict" -msgstr "" +msgstr "Конфлікт прив'язки" msgid "This key combo is already in use." -msgstr "" +msgstr "Ця комбінація клавіш вже використовується." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Надіслати Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Надіслати Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Переключити повноекранний режим" msgid "Screenshot" -msgstr "" +msgstr "Скріншот" msgid "Release mouse pointer" -msgstr "" +msgstr "Відпустити вказівник миші" msgid "Toggle pause" -msgstr "" +msgstr "Переключити паузу" msgid "Toggle mute" -msgstr "" +msgstr "Переключити беззвучний режим" msgid "Text files" -msgstr "" +msgstr "Текстові файли" msgid "ROM files" -msgstr "" +msgstr "Файли ПЗУ" msgid "SoundFont files" -msgstr "" +msgstr "Файли SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Локальний комутатор" msgid "Remote Switch" -msgstr "" +msgstr "Віддалений комутатор" msgid "Switch:" -msgstr "" +msgstr "Номер комутатора:" msgid "Hub Mode" -msgstr "" +msgstr "Режим концентратора" msgid "Hostname:" -msgstr "" +msgstr "Ім'я хоста:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA ОЗУ:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ПЗУ:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "&Стерти NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Це видалить всі файли NVRAM (і пов'язані) віртуальної машини, розташованої в підпапці «nvr». Вам доведеться знову налаштувати BIOS (і, можливо, інші пристрої всередині віртуальної машини), якщо це необхідно. Ви впевнені, що хочете стерти весь вміст NVRAM віртуальної машини \"%1\"?" msgid "Success" -msgstr "" +msgstr "Успішно" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Успішно стерто вміст NVRAM віртуальної машини \"%1\"" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Сталася помилка при спробі стерти вміст NVRAM віртуальної машини \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Менеджер віртуальних машин %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n диск(ів)" msgid "Unknown Status" -msgstr "" +msgstr "Невідомий статус" msgid "No Machines Found!" -msgstr "" +msgstr "Машини не знайдені!" msgid "Check for updates on startup" -msgstr "" +msgstr "Перевіряти оновлення під час запуску" msgid "Unable to determine release information" -msgstr "" +msgstr "Неможливо визначити інформацію про реліз" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Сталася помилка під час перевірки оновлень:\n\n%1\n\nБудь ласка, спробуйте ще раз пізніше." msgid "Update check complete" -msgstr "" +msgstr "Перевірка оновлень завершена" + +msgid "stable" +msgstr "стабільну" + +msgid "beta" +msgstr "бета" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Ви використовуєте останню %1 версію 86Box: %2" msgid "version" -msgstr "" +msgstr "версія" msgid "build" -msgstr "" +msgstr "збірка" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Ви зараз використовуєте версію %1." -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Доступна версія %1." + +msgid "You are currently running build %1." +msgstr "Ви зараз використовуєте збірку %1." + +msgid "Build %1 is now available." +msgstr "Доступна збірка %1." + +msgid "Would you like to visit the download page?" +msgstr "Відкрити сторінку завантаження?" msgid "Visit download page" -msgstr "" +msgstr "Відкрити сторінку завантаження" msgid "Update check" -msgstr "" +msgstr "Перевірка оновлень" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Перевірка оновлень..." msgid "86Box Update" -msgstr "" +msgstr "Оновлення 86Box" msgid "Release notes:" -msgstr "" +msgstr "Примітки до релізу:" -#~ msgid "HD Controller:" -#~ msgstr "Контролер HD:" +msgid "%1 Hz" +msgstr "%1 Гц" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP дисководи:" +msgid "Virtual machine crash" +msgstr "Збій віртуальної машини" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Процес віртуальної машини \"%1\" несподівано завершився з кодом завершення %2." -#~ msgid "ZIP images" -#~ msgstr "Образи ZIP" +msgid "The system will not be added." +msgstr "Система не буде додана." + +msgid "&Update mouse every CPU frame" +msgstr "&Оновлювати мишу при кожному кадрі ЦП" + +msgid "Hue" +msgstr "Відтінок" + +msgid "Saturation" +msgstr "Насичення" + +msgid "Contrast" +msgstr "Контраст" + +msgid "Brightness" +msgstr "Яскравість" + +msgid "Sharpness" +msgstr "Гострота" + +msgid "&CGA composite settings..." +msgstr "Налаштування композитного відео &CGA..." + +msgid "CGA composite settings" +msgstr "Налаштування композитного відео CGA" diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po index c603fa8fe..9a3521afb 100644 --- a/src/qt/languages/vi-VN.po +++ b/src/qt/languages/vi-VN.po @@ -10,7 +10,7 @@ msgid "&Action" msgstr "&Thực hiện" msgid "&Keyboard requires capture" -msgstr "Bàn phím &hoạt động cần capture chuột" +msgstr "Bàn phím &hoạt động cần 'bắt' chuột" msgid "&Right CTRL is left ALT" msgstr "Gắn ALT trái vào CTRL ph&ải" @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "Tạm &dừng" msgid "Pause" -msgstr "" +msgstr "Tạm dừng" msgid "Re&sume" -msgstr "" +msgstr "Tiếp tục" msgid "E&xit" msgstr "Th&oát" @@ -57,9 +57,6 @@ msgstr "Re&nderer" msgid "&Qt (Software)" msgstr "&Qt (phần mềm)" -msgid "Qt (&OpenGL)" -msgstr "Qt (&OpenGL)" - msgid "Open&GL (3.0 Core)" msgstr "Open&GL (3.0 Core)" @@ -69,8 +66,8 @@ msgstr "&VNC" msgid "Specify &dimensions..." msgstr "Tự nhập độ &phân giải..." -msgid "F&orce 4:3 display ratio" -msgstr "Giữ n&guyên khung hình 4:3" +msgid "Force &4:3 display ratio" +msgstr "Giữ nguyên khung hình &4:3" msgid "&Window scale factor" msgstr "Đổi &tỷ lệ cửa sổ" @@ -138,8 +135,8 @@ msgstr "Căn tỷ lệ số nguyên" msgid "4:&3 Integer scale" msgstr "Căn tỷ lệ 4:3 số nguyên" -msgid "E&GA/(S)VGA settings" -msgstr "Cài đặt EGA/(S)VGA" +msgid "EGA/(S)&VGA settings" +msgstr "Cài đặt EGA/(S)&VGA" msgid "&Inverted VGA monitor" msgstr "Đảo mà&u VGA" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "Màu R&GB" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (không nâu)" msgid "&RGB Grayscale" msgstr "Thang xám RG&B" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "Màn hình màu RGBI chung" msgid "&Amber monitor" msgstr "Màn hình vàng hổ phách (amber)" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "&Cài đặt..." msgid "Settings..." -msgstr "" +msgstr "Cài đặt" msgid "&Update status bar icons" msgstr "Cậ&p nhật biểu tượng thanh trạng thái" @@ -205,7 +202,7 @@ msgid "Take s&creenshot" msgstr "Chụp &màn hình" msgid "S&ound" -msgstr "&Thanh âm" +msgstr "&Âm thanh" msgid "&Preferences..." msgstr "&Tùy biến..." @@ -364,7 +361,7 @@ msgid "Configure" msgstr "Tinh chỉnh" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "Loại CPU:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "Bộ tái biên dịch động (Dynamic Recompiler)" msgid "CPU frame size" -msgstr "" +msgstr "Cỡ khung CPU" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "Khung lớn (kém mượt hơn)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "Khung nhỏ (mượt hơn)" msgid "Video:" msgstr "Video:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "Đồ họa XGA" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "Đồ họa adaptor xuất hình IBM PS/55" msgid "Keyboard:" -msgstr "" +msgstr "Bàn phím:" msgid "Keyboard" -msgstr "" +msgstr "Bàn phím" msgid "Mouse:" msgstr "Chuột:" msgid "Mouse" -msgstr "" +msgstr "Chuột" msgid "Joystick:" msgstr "Cần điều khiển:" msgid "Joystick" -msgstr "" +msgstr "Cần điều khiển" msgid "Joystick 1..." msgstr "Cần điều khiển 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "Thiết bị MIDI in:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI out:" msgid "Standalone MPU-401" msgstr "MPU-401 độc lập" @@ -519,6 +516,9 @@ msgstr "Thiết bị LPT3:" msgid "LPT4 Device:" msgstr "Thiết bị LPT4:" +msgid "Internal LPT ECP DMA:" +msgstr "LPT ECP DMA nội bộ:" + msgid "Serial port 1" msgstr "Cổng serial 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "Bộ điều khiển ổ mềm:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "Bộ điều khiển CD-ROM:" msgid "Tertiary IDE Controller" msgstr "Bộ điều khiển IDE thứ ba" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "Bộ điều khiển IDE thứ tư" msgid "Hard disk" -msgstr "" +msgstr "Ổ cứng" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "Đĩa cứng:" msgid "Firmware Version" -msgstr "" +msgstr "Phiên bản firmware" msgid "&New..." msgstr "Tạ&o mới..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "Ổ đĩa MO:" msgid "MO:" -msgstr "" +msgstr "MO:" msgid "Removable disks:" -msgstr "" +msgstr "Đĩa tháo rời được:" msgid "Removable disk drives:" -msgstr "" +msgstr "Ổ đĩa tháo rời được:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "Mở rộng bộ nhớ qua ISA" msgid "ISA ROM Cards" -msgstr "" +msgstr "Thẻ ROM ISA" msgid "Card 1:" msgstr "Thẻ 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "Thẻ 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "Bảng mạch ROM ISA chung" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "Bảng mạch đôi ROM ISA chung" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "Bảng mạch bốn ROM ISA chung" msgid "ISABugger device" msgstr "Thiết bị ISABugger" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "Vận tốc" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "Đĩa tháo rời được %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "Đĩa tháo rời được %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "Ảnh đĩa tháo rời được" msgid "Image %1" -msgstr "" +msgstr "Ảnh %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box không tìm được bản ROM nào.\n\nVui lòng tải về bộ ROM và trích xuất về thư mục \"roms\"." @@ -763,7 +763,7 @@ msgid "Input devices" msgstr "Thiết bị nhập" msgid "Sound" -msgstr "Thanh âm" +msgstr "Âm thanh" msgid "Network" msgstr "Nối mạng" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "Cổng (COM và LPT)" msgid "Ports" -msgstr "" +msgstr "Cổng" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "Cổng serial:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "Cổng parallel:" msgid "Storage controllers" msgstr "Vi điều khiển bộ nhớ ổ cứng" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "Ổ cứng" msgid "Disks:" -msgstr "" +msgstr "Đĩa:" msgid "Floppy:" -msgstr "" +msgstr "Đĩa mềm:" msgid "Controllers:" -msgstr "" +msgstr "Bộ điều khiển:" msgid "Floppy & CD-ROM drives" msgstr "Ổ (đĩa) mềm và CD-ROM" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "Thiết bị ngoại vi khác" msgid "Other devices" -msgstr "" +msgstr "Các thiết bị khác" msgid "Click to capture mouse" msgstr "Nhấp vào khung hình để 'nhốt' chuột vào" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + bàn giậm CH" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Hệ thống bánh lái" msgid "2-button gamepad(s)" -msgstr "" +msgstr "Tay cầm game hai nút" msgid "2-button flight yoke" -msgstr "" +msgstr "Vô lăng máy bay hai nút" msgid "4-button gamepad" -msgstr "" +msgstr "Tay cầm game bốn nút" msgid "4-button flight yoke" -msgstr "" +msgstr "Vô lăng máy bay bốn nút" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "Vô lăng máy bay hai nút có cần ga" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "Vô lăng máy bay bốn nút có cần ga" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Vô lăng Win95 (ba trục, bốn nút)" msgid "None" msgstr "Không có" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "Thiết bị nội bộ" msgid "&File" -msgstr "" +msgstr "&Tập tin" msgid "&New machine..." -msgstr "" +msgstr "Máy &mới" msgid "&Check for updates..." -msgstr "" +msgstr "Kiểm tra &cập nhật..." msgid "Exit" msgstr "Thoát" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "Tạm dừng thực thi" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "Nhấn Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "Buộc khởi động lại" msgid "Force shutdown" -msgstr "" +msgstr "Buộc tắt nguồn máy" msgid "Start" -msgstr "" +msgstr "Khởi động" msgid "Not running" -msgstr "" +msgstr "Đang không chạy" msgid "Running" -msgstr "" +msgstr "Đang chạy" msgid "Paused" -msgstr "" +msgstr "Đã tạm dừng" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "Đang chờ" msgid "Powered Off" -msgstr "" +msgstr "Đã tắt máy" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n đang chạy" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n đã tạm dừng" + +msgid "%n waiting" +msgstr "%n đang chờ" + +msgid "%1 total" +msgstr "%1 tổng" + +msgid "VMs: %1" +msgstr "Máy ảo: %1" msgid "System Directory:" -msgstr "" +msgstr "Thư mục hệ thống:" msgid "Choose directory" -msgstr "" +msgstr "Chọn thư mục" msgid "Choose configuration file" -msgstr "" +msgstr "Chọn tập tin cấu hình" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "Tập tin cấu hình 86Box (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "Không thể đọc cấu hình" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "Không thể mở cấu hình đã chọn để đọc: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "Dùng regex trong hộp tìm kiếm" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 máy hiện vẫn đang chạy. Bạn có muốn thoát trình quản lý máy ảo không?" msgid "Add new system wizard" -msgstr "" +msgstr "Thêm trình thuật sĩ hệ thống mới" msgid "Introduction" -msgstr "" +msgstr "Giới thiệu" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "Hướng dẫn này sẽ giúp bạn thêm hệ thống mới vào 86Box." msgid "New configuration" -msgstr "" +msgstr "Cấu hình mới" msgid "Complete" -msgstr "" +msgstr "Hoàn thành" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "Thuật sĩ bây giờ sẽ chạy cấu hình cho hệ thống mới." msgid "Use existing configuration" -msgstr "" +msgstr "Dùng cấu hình có sẵn" msgid "Type some notes here" -msgstr "" +msgstr "Nhập ghi chú vào đây" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "Dán nội dung của tập tin cấu hình có sẵn vào hộp bên dưới." msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "Nạp cấu hình từ tập tin" msgid "System name" -msgstr "" +msgstr "Tên hệ thống" msgid "System name:" -msgstr "" +msgstr "Tên hệ thống:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "Tên hệ thống không thể bao gồm các kí tự cụ thể" msgid "System name already exists" -msgstr "" +msgstr "Tên hệ thống đã tốn tại" msgid "Please enter a directory for the system" -msgstr "" +msgstr "Vui lòng nhập thư mục cho hệ thống" msgid "Directory does not exist" -msgstr "" +msgstr "Thư mục không tồn tại" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "Một thư mục mới cho hệ thống sẽ được tạo trong thư mục đã chọn ở trên" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "Vị trí hệ thống:" msgid "System name and location" -msgstr "" +msgstr "Tên và vị trí hệ thống" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "Điền tên của hệ thống và chọn vị trí" msgid "Enter the name of the system" -msgstr "" +msgstr "Điền tên hệ thống" msgid "Please enter a system name" -msgstr "" +msgstr "Hãy điền một cái tên" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "Tên hiển thị (tùy chọn):" msgid "Display name:" -msgstr "" +msgstr "Tên hiển thị:" msgid "Set display name" -msgstr "" +msgstr "Đặt tên hiển thị" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "Điền tên hiển thị mới (để trống để đặt lại)" msgid "Change &display name..." -msgstr "" +msgstr "Thay đổi tên hiển thị" msgid "Context Menu" -msgstr "" +msgstr "Menu ngữ cảnh" msgid "&Open folder..." -msgstr "" +msgstr "Mở thư mục" -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "Mở khay máy in" msgid "Set &icon..." -msgstr "" +msgstr "Đặt biểu trưng" msgid "Select an icon" -msgstr "" +msgstr "Chọn một biểu trưng" msgid "C&lone..." -msgstr "" +msgstr "Tạo bản sao" msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "Máy ảo \"%1\" (%2) sẽ được sao chép vào:" msgid "Directory %1 already exists" -msgstr "" +msgstr "Thư mục %1 đã tồn tại" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "Bạn không thể sử dụng kí tự này khi đặt tên: %1" msgid "Clone" -msgstr "" +msgstr "Tạo bản sao" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "Không thể tạo thư mục cho máy ảo đã sao chép" msgid "Failed to clone VM." -msgstr "" +msgstr "Không thể tạo bản sao của máy ảo." msgid "Directory in use" -msgstr "" +msgstr "Thư mục đang bị sử dụng" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "Thư mục bạn chọn đang bị sử dụng. Hãy chọn thư mục khác dùng được." msgid "Create directory failed" -msgstr "" +msgstr "Tạo thư mục không thành công" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "Không thể tạo thư mục cho hệ thống mới" msgid "Configuration write failed" -msgstr "" +msgstr "Không thể ghi cấu hình" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "Không mở được tập tin cấu hình ở %1 để ghi vào" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "Lỗi khi đang thêm hệ thống" msgid "Remove directory failed" -msgstr "" +msgstr "Không thể loại bỏ thư mục" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "Một số tập tin trong thư mục máy ảo không thể xóa. Bạn hãy tự xóa ở vị trí đó." msgid "Build" -msgstr "" +msgstr "Bản dựng" msgid "Version" -msgstr "" +msgstr "Phiên bản" + +msgid "An update to 86Box is available: %1 %2" +msgstr "Có cập nhật mới cho 86Box: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "Có lỗi xảy ra khi kiểm tra cập nhật: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "Có cập nhật mới cho 86Box!" msgid "Warning" -msgstr "" +msgstr "Cảnh báo" msgid "&Kill" -msgstr "" +msgstr "Buộc dừng" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "Buộc một máy ảo dừng có thể gây ra mất mát dữ liệu. Chỉ nên làm khi tiến trình 86Box bị treo.\n\nBạn có muốn buộc dừng máy ảo \"%1\" không?" msgid "&Delete" -msgstr "" +msgstr "Xóa" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "Bạn có thật sự muốn xóa máy ảo \"%1\" và tất cả các tập tin của nó không? Thao tác này không thể được phục hồi!" msgid "Show &config file" -msgstr "" +msgstr "Hiện tập tin cấu hình" msgid "No screenshot" -msgstr "" +msgstr "Không có ảnh chụp màn hình" msgid "Search" -msgstr "" +msgstr "Tìm" msgid "Searching for VMs..." -msgstr "" +msgstr "Đang tìm máy ảo..." msgid "Found %1" -msgstr "" +msgstr "Đã thấy %1" msgid "System" -msgstr "" +msgstr "Hệ thống" msgid "Storage" -msgstr "" +msgstr "Lưu trữ" msgid "Disk %1: " -msgstr "" +msgstr "Đĩa %1: " msgid "No disks" -msgstr "" +msgstr "Không có đĩa" msgid "Audio" -msgstr "" +msgstr "Âm thanh" msgid "Audio:" -msgstr "" +msgstr "Âm thanh:" msgid "ACPI shutdown" msgstr "Tắt máy theo ACPI" @@ -1626,9 +1632,6 @@ msgstr "Danh sách các thiết bị MCA:" msgid "&Tablet tool" msgstr "Công cụ bảng nhập liệu" -msgid "Qt (OpenGL &ES)" -msgstr "QT (OpenGL &ES)" - msgid "About &Qt" msgstr "Về &qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "Trình điều khiển NULL" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "Thẻ mạng 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "Tùy chọn kết xuất ..." msgid "PC/XT Keyboard" -msgstr "" +msgstr "Bàn phím PC/XT" msgid "AT Keyboard" -msgstr "" +msgstr "Bàn phím AT" msgid "AX Keyboard" -msgstr "" +msgstr "Bàn phím AX" msgid "PS/2 Keyboard" -msgstr "" +msgstr "Bàn phím PS/2" msgid "PS/55 Keyboard" -msgstr "" +msgstr "Bàn phím PS/55" msgid "Keys" -msgstr "" +msgstr "Phím" msgid "Logitech/Microsoft Bus Mouse" msgstr "Chuột bus Logitech/Microsoft" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Chuột serial Mouse Systems" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Chuột bus Mouse Systems" msgid "Microsoft Serial Mouse" msgstr "Chuột serial Microsoft" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Chuột bi serial Microsoft" msgid "Logitech Serial Mouse" msgstr "Chuột serial Logitech" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "Chuột PS/2" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "Chuột QuickPort PS/2" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (Serial)" msgid "Default Baud rate" -msgstr "" +msgstr "Tốc độ baud mặc định" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] Modem tuân thủ tiêu chuẩn Hayes" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "Thiết bị nhập MIDI" msgid "BIOS file" -msgstr "" +msgstr "Tập tin BIOS" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "Tập tin BIOS (ROM #1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "Tập tin BIOS (ROM #2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "Tập tin BIOS (ROM #3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "Tập tin BIOS (ROM #4)" msgid "BIOS address" msgstr "Địa chỉ BIOS" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "Địa chỉ BIOS (ROM #1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "Địa chỉ BIOS (ROM #2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "Địa chỉ BIOS (ROM #3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "Địa chỉ BIOS (ROM #4)" msgid "Enable BIOS extension ROM Writes" msgstr "Kích hoạt ghi ROM mở rộng BIOS" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "Kích hoạt ghi ROM mở rộng BIOS (ROM #1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "Kích hoạt ghi ROM mở rộng BIOS (ROM #2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "Kích hoạt ghi ROM mở rộng BIOS (ROM #3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "Kích hoạt ghi ROM mở rộng BIOS (ROM #4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "Địa chỉ cơ sở framebuffer tuyến tính" msgid "Address" msgstr "Địa chỉ" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "IRQ cổng serial" msgid "Parallel port IRQ" -msgstr "" +msgstr "IRQ cổng parallel" msgid "BIOS Revision" msgstr "Sửa đổi BIOS" msgid "BIOS Version" -msgstr "" +msgstr "Phiên bản BIOS" msgid "BIOS Language" -msgstr "" +msgstr "Ngôn ngữ BIOS" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "Bộ mở rộng IBM 5161" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM Cassette Basic" msgid "Translate 26 -> 17" msgstr "Dịch 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "Kích thước BIOS" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "Kích thước BIOS (ROM #1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "Kích thước BIOS (ROM #2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "Kích thước BIOS (ROM #3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "Kích thước BIOS (ROM #4)" msgid "Map C0000-C7FFF as UMB" msgstr "Map C0000-C7FFF dưới dạng UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "Phương pháp nội suy" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "Nạp mẫu động" msgid "Reverb Output Gain" msgstr "Tăng đầu ra hồi âm" @@ -2053,7 +2056,7 @@ msgid "Reversed stereo" msgstr "Đảo ngược âm thanh nổi" msgid "Nice ramp" -msgstr "Đoạn đường dốc đẹp" +msgstr "Giảm độ dốc âm lượng" msgid "Hz" msgstr "Hz" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "Bật cổng trò chơi" msgid "SID Model" -msgstr "" +msgstr "Mẫu SID" msgid "SID Filter Strength" -msgstr "" +msgstr "Cường độ bộ lọc SID" msgid "Surround module" msgstr "Mô đun vòm" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "Địa chỉ SB" msgid "Adlib Address" -msgstr "" +msgstr "Địa chỉ AdLib" msgid "Use EEPROM setting" -msgstr "" +msgstr "Dùng cài đặt EEPROM" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "Trộn" msgid "Font" -msgstr "" +msgstr "Phông" msgid "Bilinear filtering" msgstr "Lọc song tuyến" msgid "Video chroma-keying" -msgstr "" +msgstr "Tách nền màu (chroma-keying) video" msgid "Dithering" msgstr "Ngân tán" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "Chế độ EMS" msgid "EMS Address" -msgstr "" +msgstr "Địa chỉ EMS" msgid "EMS 1 Address" -msgstr "" +msgstr "Địa chỉ EMS 1" msgid "EMS 2 Address" -msgstr "" +msgstr "Địa chỉ EMS 2" msgid "EMS Memory Size" -msgstr "" +msgstr "Cỡ bộ nhớ EMS" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "Cỡ bộ nhớ EMS 1" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "Cỡ bộ nhớ EMS 2" msgid "Enable EMS" -msgstr "" +msgstr "Kích hoạt EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "Kích hoạt EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "Kích hoạt EMS 2" msgid "Address for > 2 MB" msgstr "Địa chỉ cho > 2 MB" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "Năm + con lăn" msgid "Five + 2 Wheels" -msgstr "" +msgstr "Năm + hai con lăn" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 Serial / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "Tổng hợp" +msgid "True color" +msgstr "Màu chân thật" + msgid "Old" msgstr "Cũ" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "Nội suy tuyến tính" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "Có bộ kí tự 8x8 thứ hai" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Có bảng mạch con Quadcolor II" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "Tương phản đơn sắc thay thế" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "Màu xám" msgid "Grayscale" -msgstr "" +msgstr "Thang màu xám" msgid "Color" msgstr "Màu sắc" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs mới nhất" msgid "Apply overscan deltas" -msgstr "" +msgstr "Áp dụng delta quét đè" msgid "Mono Interlaced" -msgstr "" +msgstr "Đơn sắc xen kẽ" msgid "Mono Non-Interlaced" msgstr "Đơn sắc không xen kẽ" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "Đồ họa 3Dfx Voodoo" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "Đường ống có tên (máy chủ)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "Đường ống có tên (máy khách)" msgid "Host Serial Passthrough" msgstr "Thông qua cổng serial của máy chủ" @@ -2647,28 +2653,28 @@ msgid "[Generic] RAM Disk (max. speed)" msgstr "[Generic] Đĩa RAM (tốc độ tối đa)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[Generic] 1989 (3500 RPM)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[Generic] 1992 (3600 RPM)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[Generic] 1994 (4500 RPM)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[Generic] 1996 (5400 RPM)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[Generic] 1997 (5400 RPM)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[Generic] 1998 (5400 RPM)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[Generic] 2000 (7200 RPM)" msgid "IBM 8514/A clone (ISA)" -msgstr "IBM 8514/A bản nhái (ISA)" +msgstr "IBM 8514/A bản sao (ISA)" msgid "Vendor" msgstr "Nhà sản xuất" @@ -2680,10 +2686,10 @@ msgid "60 Hz (JMP2 = 2)" msgstr "" msgid "Generic PC/XT Memory Expansion" -msgstr "Chung mở rộng bộ nhớ qua PC/XT" +msgstr "Mở rộng bộ nhớ chung qua PC/XT" msgid "Generic PC/AT Memory Expansion" -msgstr "Chung mở rộng bộ nhớ qua PC/AT" +msgstr "Mở rộng bộ nhớ chung qua PC/AT" msgid "Unable to find Dot-Matrix fonts" msgstr "Không tìm thấy phông chữ ma trận chấm" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "Cần có phông chữ TrueType trong thư mục \"roms/printer/fonts\" để mô phỏng máy in generic ESC/P ma trận chấm." msgid "Inhibit multimedia keys" -msgstr "" +msgstr "Không dùng dãy phím multimedia" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "Hỏi xác nhận trước khi lưu cài đặt" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "Hỏi xác nhận trước khi buộc khởi động lại" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "Hỏi xác nhận trước khi thoát" msgid "Options" -msgstr "" +msgstr "Tùy chọn" msgid "Model" -msgstr "" +msgstr "Mẫu máy" msgid "Model:" -msgstr "" +msgstr "Mẫu máy:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "Không thể khởi tạo renderer Vulkan." msgid "GLSL Error" -msgstr "" +msgstr "Lỗi GLSL" msgid "Could not load shader: %1" -msgstr "" +msgstr "Không thể nạp shader: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "Yêu cầu OpenGL bản 3.0 trở lên. Hiện tại bản GLSL là %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "Không thể nạp texture: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "Không thể biên dịch shader: \n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "Chương trình không được liên kết:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "Trình quản lý shader" msgid "Shader Configuration" -msgstr "" +msgstr "Cấu hình shader" msgid "Add" -msgstr "" +msgstr "Thêm" msgid "Move up" -msgstr "" +msgstr "Chuyển lên" msgid "Move down" -msgstr "" +msgstr "Chuyển xuống" msgid "Could not load file %1" -msgstr "" +msgstr "Không thể nạp tập tin %1" msgid "Key Bindings:" -msgstr "" +msgstr "Phím nóng:" msgid "Action" -msgstr "" +msgstr "Thực hiện" msgid "Keybind" -msgstr "" +msgstr "Phím nóng" msgid "Clear binding" -msgstr "" +msgstr "Xóa phím nóng" msgid "Bind" -msgstr "" +msgstr "Gắn" msgid "Bind Key" -msgstr "" +msgstr "Gắn phím" msgid "Enter key combo:" -msgstr "" +msgstr "Nhập tổ hợp phím" msgid "Bind conflict" -msgstr "" +msgstr "Gắn phím trùng lặp" msgid "This key combo is already in use." -msgstr "" +msgstr "Tổ hợp này đã được sử dụng." msgid "Send Control+Alt+Del" -msgstr "" +msgstr "Gửi Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "Gửi Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "Bật/tắt toàn màn hình" msgid "Screenshot" -msgstr "" +msgstr "Chụp màn hình" msgid "Release mouse pointer" -msgstr "" +msgstr "Thả con trỏ chuột" msgid "Toggle pause" -msgstr "" +msgstr "Tạm dừng/tiếp tục" msgid "Toggle mute" -msgstr "" +msgstr "Bật/tắt tiếng" msgid "Text files" -msgstr "" +msgstr "Tập tin văn bản" msgid "ROM files" -msgstr "" +msgstr "Tập tin ROM" msgid "SoundFont files" -msgstr "" +msgstr "Tập tin SoundFont" msgid "Local Switch" -msgstr "" +msgstr "Công tắc cục bộ" msgid "Remote Switch" -msgstr "" +msgstr "Công tắc từ xa" msgid "Switch:" -msgstr "" +msgstr "Công tắc:" msgid "Hub Mode" -msgstr "" +msgstr "Chế độ hub" msgid "Hostname:" -msgstr "" +msgstr "Tên host:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "Xóa sạch NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "Hành động này sẽ xóa toàn bộ tập tin NVRAM (và các tập tin liên quan) của máy ảo nằm trong thư mục con \"nvr\". Bạn sẽ phải cấu hình lại cài đặt BIOS (và có thể các thiết bị khác nữa bên trong máy ảo) nếu có áp dụng.\n\nBạn có chắc muốn xóa toàn bộ nội dung NVRAM của máy ảo \"%1\" không?" msgid "Success" -msgstr "" +msgstr "Thành công" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "Đã thành công xóa sạch nội dung NVRAM của máy ảo \"%1\"" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "Có lỗi xảy ra khi thử xóa nội dung NVRAM của máy ảo \"%1\"" msgid "%1 VM Manager" -msgstr "" +msgstr "Trình quản lý máy ảo %1" msgid "%n disk(s)" -msgstr "" +msgstr "%n đĩa" msgid "Unknown Status" -msgstr "" +msgstr "Trạng thái không biết" msgid "No Machines Found!" -msgstr "" +msgstr "Không tìm thấy máy nào!" msgid "Check for updates on startup" -msgstr "" +msgstr "Kiểm tra cập nhật khi khởi động" msgid "Unable to determine release information" -msgstr "" +msgstr "Không thể quyết định thông tin phát hành" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "Có lỗi xảy ra khi đang kiểm tra cập nhật:\n\n%1\n\nHãy thử lại sau." msgid "Update check complete" -msgstr "" +msgstr "Kiểm tra cập nhật hoàn tất" + +msgid "stable" +msgstr "ổn định" + +msgid "beta" +msgstr "thử nghiệm" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "Bạn đang chạy phiên bản %1 mới nhất của 86Box: %2" msgid "version" -msgstr "" +msgstr "phiên bản" msgid "build" -msgstr "" +msgstr "bản dựng" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "Bạn đang chạy phiên bản %1" -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "Phiên bản %1 hiện đã ra mắt." + +msgid "You are currently running build %1." +msgstr "Bạn đang chạy bản dựng %1" + +msgid "Build %1 is now available." +msgstr "Bản dựng %1 hiện đã ra mắt." + +msgid "Would you like to visit the download page?" +msgstr "Bạn có muốn truy cập trang tải xuống không?" msgid "Visit download page" -msgstr "" +msgstr "Truy cập trang tải xuống" msgid "Update check" -msgstr "" +msgstr "Kiểm tra cập nhật" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "Đang kiểm tra cập nhật..." msgid "86Box Update" -msgstr "" +msgstr "Cập nhật 86Box" msgid "Release notes:" -msgstr "" +msgstr "Ghi chú bản phát hành:" -#~ msgid "HD Controller:" -#~ msgstr "Bộ điều khiển ổ cứng:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "Ổ đĩa ZIP:" +msgid "Virtual machine crash" +msgstr "Máy ảo bị sập" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "Tiến trình của máy ảo \"%1\" đã bị dừng bất thường với mã thoát %2." -#~ msgid "ZIP images" -#~ msgstr "Ảnh đĩa ZIP" +msgid "The system will not be added." +msgstr "Hệ thống sẽ không được thêm." + +msgid "&Update mouse every CPU frame" +msgstr "&Cập nhật chuột mỗi cỡ khung CPU" + +msgid "Hue" +msgstr "Màu sắc" + +msgid "Saturation" +msgstr "Độ bão hòa" + +msgid "Contrast" +msgstr "Sự tương phản" + +msgid "Brightness" +msgstr "Độ sáng" + +msgid "Sharpness" +msgstr "Độ sắc nét" + +msgid "&CGA composite settings..." +msgstr "Cài đặt chế độ tổng hợp &CGA..." + +msgid "CGA composite settings" +msgstr "Cài đặt chế độ tổng hợp CGA" diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po index 74001fe1e..6f9ee1c4f 100644 --- a/src/qt/languages/zh-CN.po +++ b/src/qt/languages/zh-CN.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "暂停(&P)" msgid "Pause" -msgstr "" +msgstr "暂停" msgid "Re&sume" -msgstr "" +msgstr "恢复(&S)" msgid "E&xit" msgstr "退出(&X)" @@ -57,9 +57,6 @@ msgstr "渲染器(&N)" msgid "&Qt (Software)" msgstr "Qt (软件)(&Q)" -msgid "Qt (&OpenGL)" -msgstr "Qt (OpenGL)(&O)" - msgid "Open&GL (3.0 Core)" msgstr "OpenGL (3.0 Core)(&G)" @@ -69,8 +66,8 @@ msgstr "VNC(&V)" msgid "Specify &dimensions..." msgstr "指定窗口大小...(&D)" -msgid "F&orce 4:3 display ratio" -msgstr "强制 4:3 显示比例(&O)" +msgid "Force &4:3 display ratio" +msgstr "强制 4:3 显示比例(&4)" msgid "&Window scale factor" msgstr "窗口缩放系数(&W)" @@ -138,8 +135,8 @@ msgstr "整数比例(&I)" msgid "4:&3 Integer scale" msgstr "4:3 整数比例(&3)" -msgid "E&GA/(S)VGA settings" -msgstr "EGA/(S)VGA 设置(&G)" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)VGA 设置(&V)" msgid "&Inverted VGA monitor" msgstr "VGA 显示器反色显示(&I)" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB 彩色(&C)" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (无棕色)" msgid "&RGB Grayscale" msgstr "RGB 灰度(&R)" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "通用 RGBI 彩色显示器" msgid "&Amber monitor" msgstr "琥珀色单色显示器(&A)" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "设置(&S)..." msgid "Settings..." -msgstr "" +msgstr "设置" msgid "&Update status bar icons" msgstr "更新状态栏图标(&U)" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "配置" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "CPU 类型:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "动态重编译器" msgid "CPU frame size" -msgstr "" +msgstr "CPU 执行帧长度" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "大执行帧 (操作欠平滑)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "小执行帧 (操作更平滑)" msgid "Video:" msgstr "显卡:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA 图形" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 显示适配器图形" msgid "Keyboard:" -msgstr "" +msgstr "键盘:" msgid "Keyboard" -msgstr "" +msgstr "键盘" msgid "Mouse:" msgstr "鼠标:" msgid "Mouse" -msgstr "" +msgstr "鼠标" msgid "Joystick:" msgstr "操纵杆:" msgid "Joystick" -msgstr "" +msgstr "操纵杆" msgid "Joystick 1..." msgstr "操纵杆 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI 输入设备:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI 输出:" msgid "Standalone MPU-401" msgstr "独立 MPU-401" @@ -519,6 +516,9 @@ msgstr "LPT3 设备:" msgid "LPT4 Device:" msgstr "LPT4 设备:" +msgid "Internal LPT ECP DMA:" +msgstr "内部 LPT 的 ECP DMA:" + msgid "Serial port 1" msgstr "串口 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "软盘控制器:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ROM 控制器" msgid "Tertiary IDE Controller" msgstr "第三 IDE 控制器" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "第四 IDE 控制器" msgid "Hard disk" -msgstr "" +msgstr "硬盘" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "硬盘:" msgid "Firmware Version" -msgstr "" +msgstr "固件版本" msgid "&New..." msgstr "新建(&N)..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "磁光盘驱动器:" msgid "MO:" -msgstr "" +msgstr "磁光盘:" msgid "Removable disks:" -msgstr "" +msgstr "可移动磁盘 (ZIP):" msgid "Removable disk drives:" -msgstr "" +msgstr "可移动磁盘 (ZIP) 驱动器:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA 内存扩展" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM 扩展卡" msgid "Card 1:" msgstr "扩展卡 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "扩展卡 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "通用 ISA ROM 卡" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "通用 ISA 双 ROM 卡" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "通用 ISA 四 ROM 卡" msgid "ISABugger device" msgstr "ISABugger 设备" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "速度" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "可移动磁盘 (ZIP) %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "可移动磁盘(&R) (ZIP) %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "可移动磁盘 (ZIP) 映像" msgid "Image %1" -msgstr "" +msgstr "映像 %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box 找不到任何可用的 ROM 映像。\n\n请下载 ROM 包并将其解压到 \"roms\" 文件夹中。" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "端口 (COM 和 LPT)" msgid "Ports" -msgstr "" +msgstr "端口" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "串行端口:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "并行端口:" msgid "Storage controllers" msgstr "存储控制器" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "硬盘" msgid "Disks:" -msgstr "" +msgstr "硬盘:" msgid "Floppy:" -msgstr "" +msgstr "软盘:" msgid "Controllers:" -msgstr "" +msgstr "控制器:" msgid "Floppy & CD-ROM drives" msgstr "软盘/光盘驱动器" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "其他外围设备" msgid "Other devices" -msgstr "" +msgstr "其他设备" msgid "Click to capture mouse" msgstr "单击窗口捕捉鼠标" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2 按钮游戏手柄" msgid "2-button flight yoke" -msgstr "" +msgstr "2 按钮飞行摇杆" msgid "4-button gamepad" -msgstr "" +msgstr "4 按钮游戏手柄" msgid "4-button flight yoke" -msgstr "" +msgstr "4 按钮飞行摇杆" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2 按钮带油门飞行摇杆" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4 按钮带油门飞行摇杆" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95 方向盘 (3 轴, 4 键)" msgid "None" msgstr "无" @@ -916,7 +916,7 @@ msgid "Floppy %1 (%2): %3" msgstr "软盘 %1 (%2): %3" msgid "&Floppy %1 (%2): %3" -msgstr "软盘 %1 (%2): %3(&F)" +msgstr "软盘(&F) %1 (%2): %3" msgid "Advanced sector images" msgstr "高级扇区映像" @@ -940,7 +940,7 @@ msgid "MO %1 (%2): %3" msgstr "磁光盘 %1 (%2): %3" msgid "&MO %1 (%2): %3" -msgstr "磁光盘 %1 (%2): %3(&M)" +msgstr "磁光盘(&M) %1 (%2): %3" msgid "MO images" msgstr "磁光盘映像" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "内部设备" msgid "&File" -msgstr "" +msgstr "文件(&F)" msgid "&New machine..." -msgstr "" +msgstr "新建计算机(&N)..." msgid "&Check for updates..." -msgstr "" +msgstr "检查更新(&C)..." msgid "Exit" msgstr "退出" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "暂停执行" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "按下 Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "硬重置" msgid "Force shutdown" -msgstr "" +msgstr "强制关机" msgid "Start" -msgstr "" +msgstr "启动" msgid "Not running" -msgstr "" +msgstr "未在运行" msgid "Running" -msgstr "" +msgstr "正在运行" msgid "Paused" -msgstr "" +msgstr "已暂停" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "等待中" msgid "Powered Off" -msgstr "" +msgstr "已关机" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n 正在运行" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n 已暂停" + +msgid "%n waiting" +msgstr "%n 等待中" + +msgid "%1 total" +msgstr "%1 总计" + +msgid "VMs: %1" +msgstr "虚拟机: %1" msgid "System Directory:" -msgstr "" +msgstr "系统目录" msgid "Choose directory" -msgstr "" +msgstr "选择目录" msgid "Choose configuration file" -msgstr "" +msgstr "选择配置文件" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box 配置文件 (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "读取配置失败" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "无法打开选定的配置文件进行读取:%1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "在搜索框中使用正则表达式" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 计算机当前处于活动状态。您确定要退出虚拟机管理器吗?" msgid "Add new system wizard" -msgstr "" +msgstr "新增系统向导" msgid "Introduction" -msgstr "" +msgstr "介绍" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "这将帮助您在86Box中添加一个新系统。" msgid "New configuration" -msgstr "" +msgstr "新配置" msgid "Complete" -msgstr "" +msgstr "完成" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "向导现在将启动新系统的配置。" msgid "Use existing configuration" -msgstr "" +msgstr "使用现有配置" msgid "Type some notes here" -msgstr "" +msgstr "在此处键入一些备注" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "将现有配置文件内容粘贴到下面的框中。" msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "从文件加载配置" msgid "System name" -msgstr "" +msgstr "系统名称" msgid "System name:" -msgstr "" +msgstr "系统名称:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "系统名称不能包含某些字符" msgid "System name already exists" -msgstr "" +msgstr "系统名称已存在" msgid "Please enter a directory for the system" -msgstr "" +msgstr "请为系统输入一个目录" msgid "Directory does not exist" -msgstr "" +msgstr "目录不存在" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "将在上方选定的目录中为系统创建一个新目录" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "系统位置:" msgid "System name and location" -msgstr "" +msgstr "系统名称和位置" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "输入系统名称并选择位置" msgid "Enter the name of the system" -msgstr "" +msgstr "输入系统名称" msgid "Please enter a system name" -msgstr "" +msgstr "请输入系统名称" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "显示名称 (可选)" msgid "Display name:" -msgstr "" +msgstr "显示名称:" msgid "Set display name" -msgstr "" +msgstr "设置显示名称" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "输入新的显示名称 (留空以重置)" msgid "Change &display name..." -msgstr "" +msgstr "更改显示名称(&D)..." msgid "Context Menu" -msgstr "" +msgstr "上下文菜单" msgid "&Open folder..." -msgstr "" +msgstr "打开文件夹(&O)..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "打开打印机托盘(&R)..." msgid "Set &icon..." -msgstr "" +msgstr "设置图标(&I)..." msgid "Select an icon" -msgstr "" +msgstr "选择一个图标" msgid "C&lone..." -msgstr "" +msgstr "克隆(&L)..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "虚拟机 \"%1\" (%2) 将被克隆到:" msgid "Directory %1 already exists" -msgstr "" +msgstr "目录 %1 已存在" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr " %1: 名称中不能使用以下字符: %1" msgid "Clone" -msgstr "" +msgstr "克隆" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "创建克隆虚拟机目录失败" msgid "Failed to clone VM." -msgstr "" +msgstr "克隆虚拟机失败。" msgid "Directory in use" -msgstr "" +msgstr "目录正在使用中" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "所选目录已被占用,请选择另一个目录。" msgid "Create directory failed" -msgstr "" +msgstr "创建目录失败" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "无法为新系统创建目录" msgid "Configuration write failed" -msgstr "" +msgstr "配置写入失败" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "无法打开 %1 的配置文件进行写入" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "添加系统时出错" msgid "Remove directory failed" -msgstr "" +msgstr "移除目录失败" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "无法删除该机器目录中的某些文件。请手动删除。" msgid "Build" -msgstr "" +msgstr "构建" msgid "Version" -msgstr "" +msgstr "版本" + +msgid "An update to 86Box is available: %1 %2" +msgstr "86Box 有可用更新:%1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "检查更新时发生错误:%1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "86Box 有可用更新!" msgid "Warning" -msgstr "" +msgstr "警告" msgid "&Kill" -msgstr "" +msgstr "强制终止(&K)" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "强制终止虚拟机可能导致数据丢失。仅在86Box进程卡住时才执行此操作。\n\n您确定要强制终止虚拟机 \"%1\" 吗?" msgid "&Delete" -msgstr "" +msgstr "删除(&D)" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "你真的想删除虚拟机 \"%1\" 及其所有文件吗?此操作无法撤消!" msgid "Show &config file" -msgstr "" +msgstr "显示配置文件(&C)" msgid "No screenshot" -msgstr "" +msgstr "无截图" msgid "Search" -msgstr "" +msgstr "搜索" msgid "Searching for VMs..." -msgstr "" +msgstr "正在搜索虚拟机..." msgid "Found %1" -msgstr "" +msgstr "已找到 %1" msgid "System" -msgstr "" +msgstr "系统" msgid "Storage" -msgstr "" +msgstr "存储" msgid "Disk %1: " -msgstr "" +msgstr "磁盘 %1" msgid "No disks" -msgstr "" +msgstr "无磁盘" msgid "Audio" -msgstr "" +msgstr "音频" msgid "Audio:" -msgstr "" +msgstr "音频:" msgid "ACPI shutdown" msgstr "ACPI 关机" @@ -1381,10 +1387,10 @@ msgid "Disk image created" msgstr "已创建磁盘映像" msgid "Make sure the file exists and is readable." -msgstr "请确定此文件已存在并可读取。" +msgstr "请确定此文件存在并可读取。" msgid "Make sure the file is being saved to a writable directory." -msgstr "请确定此文件保存在可写目录中。" +msgstr "请确定此文件保存在可写入目录中。" msgid "Disk image too large" msgstr "磁盘映像太大" @@ -1600,7 +1606,7 @@ msgid "WinBox is no longer supported" msgstr "WinBox 不再受支持" msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use." -msgstr "由于缺乏维护者,WinBox 管理器的开发工作于 2022 年停止。由于我们正努力将 86Box 做得更好,因此决定不再支持 WinBox 作为管理器。\n\nWinBox将不再提供更新,如果你继续在86Box的新版本中使用WinBox,可能会遇到不正确的行为。任何与 WinBox 行为相关的错误报告都将被视为无效而关闭。\n\n请访问 86box.net,查看你可以使用的其他管理器列表。" +msgstr "由于缺乏维护者,WinBox 管理器的开发工作于 2022 年停止。由于我们正努力将 86Box 做得更好,因此决定不再支持 WinBox 作为管理器。\n\nWinBox 将不再提供更新,如果你继续在 86Box 的新版本中使用 WinBox,可能会遇到不正确的行为。任何与 WinBox 行为相关的错误报告都将被视为无效而关闭。\n\n请访问 86box.net,查看你可以使用的其他管理器列表。" msgid "Generate" msgstr "生成" @@ -1626,9 +1632,6 @@ msgstr "MCA 设备清单:" msgid "&Tablet tool" msgstr "平板工具(&T)" -msgid "Qt (OpenGL &ES)" -msgstr "Qt(OpenGL &ES)" - msgid "About &Qt" msgstr "关于 &Qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "空驱动程序" msgid "NIC:" -msgstr "" +msgstr "网卡:" msgid "NIC %1 (%2) %3" msgstr "NIC %1 (%2) %3" @@ -1690,7 +1693,7 @@ msgid " fps" msgstr " fps" msgid "VSync" -msgstr "VSync" +msgstr "垂直同步" msgid "Synchronize with video" msgstr "与视频同步" @@ -1726,7 +1729,7 @@ msgid "This machine might have been moved or copied." msgstr "这台机器可能被移动或复制过。" msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure." -msgstr "为了确保网络功能正常,86Box需要知道这台机器是否被移动或复制。\n\n如果您不确定,请选择\"我已复制这台机器\"。" +msgstr "为了确保网络功能正常,86Box 需要知道这台机器是否被移动或复制。\n\n如果您不确定,请选择\"我已复制这台机器\"。" msgid "I Moved It" msgstr "我已移动这台机器" @@ -1735,7 +1738,7 @@ msgid "I Copied It" msgstr "我已复制这台机器" msgid "86Box Monitor #" -msgstr "86Box 监测器 #" +msgstr "86Box 显示器 #" msgid "No MCA devices." msgstr "无 MCA 设备。" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "兆字节" msgid "GiB" -msgstr "" +msgstr "吉字节" msgid "Network Card #1" msgstr "网卡 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "渲染器选项...(&O)" msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT 键盘" msgid "AT Keyboard" -msgstr "" +msgstr "AT 键盘" msgid "AX Keyboard" -msgstr "" +msgstr "AX 键盘" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2 键盘" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55 键盘" msgid "Keys" -msgstr "" +msgstr "按键" msgid "Logitech/Microsoft Bus Mouse" msgstr "Logitech/Microsoft 总线鼠标" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Mouse Systems 串行鼠标" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Mouse Systems 总线鼠标" msgid "Microsoft Serial Mouse" msgstr "Microsoft 串行鼠标" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Microsoft Ballpoint 串行鼠标" msgid "Logitech Serial Mouse" msgstr "Logitech 串行鼠标" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "PS/2 鼠标" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort 鼠标" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (串行)" msgid "Default Baud rate" -msgstr "" +msgstr "默认波特率" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] 标准 Hayes 兼容调制解调器" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "MIDI 输入设备" msgid "BIOS file" -msgstr "" +msgstr "BIOS 文件" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS 文件 (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS 文件 (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS 文件 (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS 文件 (ROM 4)" msgid "BIOS address" msgstr "BIOS 地址" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS 地址 (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS 地址 (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS 地址 (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS 地址 (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "启用 BIOS 扩展 ROM 写入功能" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "启用 BIOS 扩展 ROM 写入功能 (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "启用 BIOS 扩展 ROM 写入功能 (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "启用 BIOS 扩展 ROM 写入功能 (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "启用 BIOS 扩展 ROM 写入功能 (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "线性帧缓冲基址" msgid "Address" msgstr "地址" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "串口的 IRQ" msgid "Parallel port IRQ" -msgstr "" +msgstr "并行端口的 IRQ" msgid "BIOS Revision" msgstr "BIOS 修订版" msgid "BIOS Version" -msgstr "" +msgstr "BIOS 版本" msgid "BIOS Language" -msgstr "" +msgstr "BIOS 语言" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161 扩展单元" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM 磁带 BASIC" msgid "Translate 26 -> 17" msgstr "翻译 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "BIOS 大小" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOS 大小 (ROM 1)" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOS 大小 (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOS 大小 (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOS 大小 (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "将 C0000-C7FFF 映射为 UMB" @@ -2029,7 +2032,7 @@ msgid "Reverb" msgstr "混响" msgid "Reverb Room Size" -msgstr "混响室的大小" +msgstr "混响室大小" msgid "Reverb Damping" msgstr "混响阻尼" @@ -2044,16 +2047,16 @@ msgid "Interpolation Method" msgstr "插值法" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "采样的动态加载" msgid "Reverb Output Gain" -msgstr "混响输出的增益" +msgstr "混响输出增益" msgid "Reversed stereo" msgstr "反转立体声" msgid "Nice ramp" -msgstr "漂亮的斜坡" +msgstr "平滑渐变曲线" msgid "Hz" msgstr "Hz" @@ -2068,7 +2071,7 @@ msgid "RTS toggle" msgstr "RTS 切换" msgid "Revision" -msgstr "修订" +msgstr "修订版" msgid "Controller" msgstr "控制器" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "启用游戏端口" msgid "SID Model" -msgstr "" +msgstr "SID 芯片型号" msgid "SID Filter Strength" -msgstr "" +msgstr "SID 滤镜强度" msgid "Surround module" msgstr "环绕声模块" @@ -2149,13 +2152,13 @@ msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)" msgstr "在 CODEC 设置时引发 CODEC 中断(某些驱动程序需要)。" msgid "SB Address" -msgstr "SB 地址" +msgstr "Sound Blaster 地址" msgid "Adlib Address" -msgstr "" +msgstr "Adlib 地址" msgid "Use EEPROM setting" -msgstr "" +msgstr "使用 EEPROM 设置" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2170,7 +2173,7 @@ msgid "Receive MIDI input (MPU-401)" msgstr "接收 MIDI 输入(MPU-401)" msgid "SB low DMA" -msgstr "SB 低 DMA" +msgstr "Sound Blaster 低 DMA" msgid "6CH variant (6-channel)" msgstr "6 通道变体(6 通道)" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "混合" msgid "Font" -msgstr "" +msgstr "字体" msgid "Bilinear filtering" msgstr "双线性滤波" msgid "Video chroma-keying" -msgstr "" +msgstr "视频色键透明处理" msgid "Dithering" msgstr "抖动" @@ -2257,7 +2260,7 @@ msgid "Enable NMI for CGA emulation" msgstr "为 CGA 仿真启用 NMI" msgid "Voodoo type" -msgstr "巫毒类型" +msgstr "Voodoo 类型" msgid "Framebuffer memory size" msgstr "帧缓冲区内存大小" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "EMS (扩展内存)模式" msgid "EMS Address" -msgstr "" +msgstr "EMS 地址" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1 地址" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2 地址" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS 内存大小" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1 内存大小" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2 内存大小" msgid "Enable EMS" -msgstr "" +msgstr "启用 EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "启用 EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "启用 EMS 2" msgid "Address for > 2 MB" msgstr "地址 > 2 MB" @@ -2326,7 +2329,7 @@ msgid "Frame Address" msgstr "帧地址" msgid "USA" -msgstr "美国" +msgstr "美国英语" msgid "Danish" msgstr "丹麦语" @@ -2374,10 +2377,10 @@ msgid "Wheel" msgstr "滚轮" msgid "Five + Wheel" -msgstr "五键+滚轮" +msgstr "五键 + 滚轮" msgid "Five + 2 Wheels" -msgstr "五键+双滚轮" +msgstr "五键 + 双滚轮" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 串行 / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "复合视频" +msgid "True color" +msgstr "真彩色" + msgid "Old" msgstr "旧" @@ -2452,7 +2458,7 @@ msgid "Color (generic)" msgstr "彩色(通用)" msgid "Green Monochrome" -msgstr "单色绿色" +msgstr "绿色单色" msgid "Amber Monochrome" msgstr "琥珀单色" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "线性插值" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "第二 8x8 字符集" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "Quadcolor II 子卡" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "翻转单色对比度" msgid "128 KB" msgstr "128 KB" @@ -2503,10 +2509,10 @@ msgid "Color 80x25 (5153/CGA)" msgstr "彩色 80x25(5153/CGA)" msgid "Enhanced Color - Normal Mode (5154/ECD)" -msgstr "增强色彩 - 正常模式 (5154/ECD)" +msgstr "增强色 - 正常模式 (5154/ECD)" msgid "Enhanced Color - Enhanced Mode (5154/ECD)" -msgstr "增强色彩 - 增强模式 (5154/ECD)" +msgstr "增强色 - 增强模式 (5154/ECD)" msgid "Green" msgstr "绿色" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "灰色" msgid "Grayscale" -msgstr "" +msgstr "灰阶" msgid "Color" msgstr "彩色" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs 最新版本" msgid "Apply overscan deltas" -msgstr "" +msgstr "应用过扫描增量" msgid "Mono Interlaced" -msgstr "" +msgstr "单色隔行扫描" msgid "Mono Non-Interlaced" msgstr "单色非隔行扫描" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo 图形" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst(2 个 TMU)" @@ -2599,7 +2605,7 @@ msgid "Parallel Line Internet Protocol" msgstr "Parallel Line Internet Protocol" msgid "Protection Dongle for Savage Quest" -msgstr "Savage Quest保护加密狗" +msgstr "Savage Quest 保护加密狗" msgid "Serial Passthrough Device" msgstr "串行端口直通设备" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "命名管道(服务器)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "命名管道 (客户端) " msgid "Host Serial Passthrough" msgstr "主机串行端口直通" @@ -2752,163 +2758,199 @@ msgid "Could not load file %1" msgstr "无法加载文件 %1" msgid "Key Bindings:" -msgstr "" +msgstr "按键绑定" msgid "Action" -msgstr "" +msgstr "动作" msgid "Keybind" -msgstr "" +msgstr "绑定的按键" msgid "Clear binding" -msgstr "" +msgstr "清除绑定" msgid "Bind" -msgstr "" +msgstr "绑定" msgid "Bind Key" -msgstr "" +msgstr "绑定按键" msgid "Enter key combo:" -msgstr "" +msgstr "输入按键组合" msgid "Bind conflict" -msgstr "" +msgstr "绑定冲突" msgid "This key combo is already in use." -msgstr "" +msgstr "该按键组合已被使用。" msgid "Send Control+Alt+Del" -msgstr "" +msgstr "发送 Ctrl+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "发送 Ctrl+Alt+Esc" msgid "Toggle fullscreen" -msgstr "" +msgstr "切换全屏" msgid "Screenshot" -msgstr "" +msgstr "截图" msgid "Release mouse pointer" -msgstr "" +msgstr "释放鼠标" msgid "Toggle pause" -msgstr "" +msgstr "切换暂停" msgid "Toggle mute" -msgstr "" +msgstr "切换静音" msgid "Text files" -msgstr "" +msgstr "文本文件" msgid "ROM files" -msgstr "" +msgstr "ROM 文件" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont 文件" msgid "Local Switch" -msgstr "" +msgstr "本地交换机" msgid "Remote Switch" -msgstr "" +msgstr "远程交换机" msgid "Switch:" -msgstr "" +msgstr "交换机:" msgid "Hub Mode" -msgstr "" +msgstr "集线器模式" msgid "Hostname:" -msgstr "" +msgstr "主机名:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA 内存:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "清除 NVRAM(&W)" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "这将删除虚拟机位于 \"nvr\" 子目录中的所有 NVRAM 文件(及相关文件)。如果应用,您需要重新配置 BIOS(以及虚拟机内可能的其他设备)设置。\n\n您确定要擦除虚拟机 \"%1\" 的所有 NVRAM 内容吗?" msgid "Success" -msgstr "" +msgstr "成功" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "已成功清除虚拟机 \"%1\" 的 NVRAM 内容" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "尝试清除虚拟机 \"%1\" 的 NVRAM 内容时发生错误" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 虚拟机管理器" msgid "%n disk(s)" -msgstr "" +msgstr "%n 磁盘" msgid "Unknown Status" -msgstr "" +msgstr "未知状态" msgid "No Machines Found!" -msgstr "" +msgstr "未找到任何虚拟机!" msgid "Check for updates on startup" -msgstr "" +msgstr "启动时检查更新" msgid "Unable to determine release information" -msgstr "" +msgstr "无法确定发行版信息" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "检查更新:\n\n%1 时出错。\n\n请稍后再试。" msgid "Update check complete" -msgstr "" +msgstr "检查更新已完成" + +msgid "stable" +msgstr "稳定版" + +msgid "beta" +msgstr "测试版" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "您正在运行 86Box 的最新 %1 版本:%2" msgid "version" -msgstr "" +msgstr "版本" msgid "build" -msgstr "" +msgstr "构建" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "您当前正在运行版本 %1 。" -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "版本 %1现已可用。" + +msgid "You are currently running build %1." +msgstr "您当前正在运行构建 %1 。" + +msgid "Build %1 is now available." +msgstr "构建 %1现已可用。" + +msgid "Would you like to visit the download page?" +msgstr "您想访问下载页面吗?" msgid "Visit download page" -msgstr "" +msgstr "访问下载页面" msgid "Update check" -msgstr "" +msgstr "更新检查" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "正在检查更新..." msgid "86Box Update" -msgstr "" +msgstr "86Box 更新" msgid "Release notes:" -msgstr "" +msgstr "发行版说明" -#~ msgid "HD Controller:" -#~ msgstr "硬盘控制器:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP 驱动器:" +msgid "Virtual machine crash" +msgstr "虚拟机崩溃" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "虚拟机 \"%1\" 的进程意外终止,退出代码为 %2。" -#~ msgid "ZIP images" -#~ msgstr "ZIP 映像" +msgid "The system will not be added." +msgstr "系统将不会被添加。" + +msgid "&Update mouse every CPU frame" +msgstr "逐 CPU 帧更新鼠标(&U)" + +msgid "Hue" +msgstr "色调" + +msgid "Saturation" +msgstr "饱和度" + +msgid "Contrast" +msgstr "对比" + +msgid "Brightness" +msgstr "亮度" + +msgid "Sharpness" +msgstr "锐度" + +msgid "&CGA composite settings..." +msgstr "CGA 复合模式设置...(&C)" + +msgid "CGA composite settings" +msgstr "CGA 复合模式设置" diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po index a57f8f30b..ad03bd44d 100644 --- a/src/qt/languages/zh-TW.po +++ b/src/qt/languages/zh-TW.po @@ -28,10 +28,10 @@ msgid "&Pause" msgstr "暫停(&P)" msgid "Pause" -msgstr "" +msgstr "暫停" msgid "Re&sume" -msgstr "" +msgstr "恢復" msgid "E&xit" msgstr "退出(&X)" @@ -57,9 +57,6 @@ msgstr "渲染器(&N)" msgid "&Qt (Software)" msgstr "Qt (軟體)(&Q)" -msgid "Qt (&OpenGL)" -msgstr "Qt (OpenGL)(&O)" - msgid "Open&GL (3.0 Core)" msgstr "OpenGL (3.0 Core)(&G)" @@ -69,8 +66,8 @@ msgstr "VNC(&V)" msgid "Specify &dimensions..." msgstr "指定視窗大小...(&D)" -msgid "F&orce 4:3 display ratio" -msgstr "強制 4:3 顯示比例(&O)" +msgid "Force &4:3 display ratio" +msgstr "強制 4:3 顯示比例(&4)" msgid "&Window scale factor" msgstr "視窗縮放係數(&W)" @@ -138,8 +135,8 @@ msgstr "整數比例(&I)" msgid "4:&3 Integer scale" msgstr "4:3 整數比例(&3)" -msgid "E&GA/(S)VGA settings" -msgstr "EGA/(S)VGA 設定(&G)" +msgid "EGA/(S)&VGA settings" +msgstr "EGA/(S)VGA 設定(&V)" msgid "&Inverted VGA monitor" msgstr "VGA 顯示器反色顯示(&I)" @@ -151,13 +148,13 @@ msgid "RGB &Color" msgstr "RGB 彩色(&C)" msgid "RGB (no brown)" -msgstr "" +msgstr "RGB (無棕色)" msgid "&RGB Grayscale" msgstr "RGB 灰度(&R)" msgid "Generic RGBI color monitor" -msgstr "" +msgstr "通用 RGBI 彩色監視器" msgid "&Amber monitor" msgstr "琥珀色單色顯示器(&A)" @@ -196,7 +193,7 @@ msgid "&Settings..." msgstr "設定(&S)..." msgid "Settings..." -msgstr "" +msgstr "設定..." msgid "&Update status bar icons" msgstr "更新狀態列圖示(&U)" @@ -364,7 +361,7 @@ msgid "Configure" msgstr "設定" msgid "CPU:" -msgstr "" +msgstr "CPU:" msgid "CPU type:" msgstr "CPU 類型:" @@ -403,13 +400,13 @@ msgid "Dynamic Recompiler" msgstr "動態重編譯器" msgid "CPU frame size" -msgstr "" +msgstr "CPU 框架大小" msgid "Larger frames (less smooth)" -msgstr "" +msgstr "較大的框架 (較不平滑)" msgid "Smaller frames (smoother)" -msgstr "" +msgstr "更小的框架 (更平滑)" msgid "Video:" msgstr "顯示卡:" @@ -427,25 +424,25 @@ msgid "XGA Graphics" msgstr "XGA Graphics" msgid "IBM PS/55 Display Adapter Graphics" -msgstr "" +msgstr "IBM PS/55 顯示介面卡圖形" msgid "Keyboard:" -msgstr "" +msgstr "鍵盤:" msgid "Keyboard" -msgstr "" +msgstr "鍵盤" msgid "Mouse:" msgstr "滑鼠:" msgid "Mouse" -msgstr "" +msgstr "滑鼠" msgid "Joystick:" msgstr "搖桿:" msgid "Joystick" -msgstr "" +msgstr "搖桿" msgid "Joystick 1..." msgstr "搖桿 1..." @@ -478,7 +475,7 @@ msgid "MIDI In Device:" msgstr "MIDI 輸入裝置:" msgid "MIDI Out:" -msgstr "" +msgstr "MIDI 輸出:" msgid "Standalone MPU-401" msgstr "獨立 MPU-401" @@ -519,6 +516,9 @@ msgstr "LPT3 裝置:" msgid "LPT4 Device:" msgstr "LPT4 裝置:" +msgid "Internal LPT ECP DMA:" +msgstr "內部 LPT 的 ECP 的 DMA:" + msgid "Serial port 1" msgstr "序列埠 1" @@ -547,7 +547,7 @@ msgid "FD Controller:" msgstr "軟碟控制器:" msgid "CD-ROM Controller:" -msgstr "" +msgstr "CD-ROM 控制器" msgid "Tertiary IDE Controller" msgstr "第三 IDE 控制器" @@ -556,7 +556,7 @@ msgid "Quaternary IDE Controller" msgstr "第四 IDE 控制器" msgid "Hard disk" -msgstr "" +msgstr "硬碟" msgid "SCSI" msgstr "SCSI" @@ -580,7 +580,7 @@ msgid "Hard disks:" msgstr "硬碟:" msgid "Firmware Version" -msgstr "" +msgstr "韌體版本" msgid "&New..." msgstr "新增(&N)..." @@ -640,13 +640,13 @@ msgid "MO drives:" msgstr "磁光碟機:" msgid "MO:" -msgstr "" +msgstr "磁光:" msgid "Removable disks:" -msgstr "" +msgstr "可移除:" msgid "Removable disk drives:" -msgstr "" +msgstr "可移除磁碟:" msgid "ZIP 250" msgstr "ZIP 250" @@ -658,7 +658,7 @@ msgid "ISA Memory Expansion" msgstr "ISA 記憶體擴充" msgid "ISA ROM Cards" -msgstr "" +msgstr "ISA ROM 擴充卡" msgid "Card 1:" msgstr "擴充卡 1:" @@ -673,13 +673,13 @@ msgid "Card 4:" msgstr "擴充卡 4:" msgid "Generic ISA ROM Board" -msgstr "" +msgstr "通用 ISA ROM 板" msgid "Generic Dual ISA ROM Board" -msgstr "" +msgstr "通用雙 ISA ROM 板" msgid "Generic Quad ISA ROM Board" -msgstr "" +msgstr "通用四通道 ISA ROM 板" msgid "ISABugger device" msgstr "ISABugger 裝置" @@ -703,16 +703,16 @@ msgid "Speed" msgstr "速度" msgid "Removable disk %1 (%2): %3" -msgstr "" +msgstr "可移除磁碟 %1 (%2): %3" msgid "&Removable disk %1 (%2): %3" -msgstr "" +msgstr "可移除磁碟(&R) %1 (%2): %3" msgid "Removable disk images" -msgstr "" +msgstr "可移除磁碟影像" msgid "Image %1" -msgstr "" +msgstr "影像 %1" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." msgstr "86Box 找不到任何可用的 ROM 映像。\n\n請下載 ROM 套件並將其解壓到 \"roms\" 資料夾。" @@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)" msgstr "連接埠 (COM 和 LPT)" msgid "Ports" -msgstr "" +msgstr "連接埠" -msgid "Serial ports" -msgstr "" +msgid "Serial ports:" +msgstr "序列連接埠:" -msgid "Parallel ports" -msgstr "" +msgid "Parallel ports:" +msgstr "平行埠:" msgid "Storage controllers" msgstr "存儲控制器" @@ -787,13 +787,13 @@ msgid "Hard disks" msgstr "硬碟" msgid "Disks:" -msgstr "" +msgstr "磁碟:" msgid "Floppy:" -msgstr "" +msgstr "軟盤:" msgid "Controllers:" -msgstr "" +msgstr "控制器:" msgid "Floppy & CD-ROM drives" msgstr "軟碟/光碟機" @@ -805,7 +805,7 @@ msgid "Other peripherals" msgstr "其他周邊裝置" msgid "Other devices" -msgstr "" +msgstr "其他裝置" msgid "Click to capture mouse" msgstr "點擊視窗捕捉滑鼠" @@ -874,7 +874,7 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "CH Flightstick Pro + CH Pedals" -msgstr "" +msgstr "CH Flightstick Pro + CH Pedals" msgid "Microsoft SideWinder Pad" msgstr "Microsoft SideWinder Pad" @@ -883,28 +883,28 @@ msgid "Thrustmaster Flight Control System" msgstr "Thrustmaster Flight Control System" msgid "Thrustmaster FCS + Rudder Control System" -msgstr "" +msgstr "Thrustmaster FCS + Rudder Control System" msgid "2-button gamepad(s)" -msgstr "" +msgstr "2 鍵遊戲手柄" msgid "2-button flight yoke" -msgstr "" +msgstr "2 按鈕飛行搖桿" msgid "4-button gamepad" -msgstr "" +msgstr "4 鍵遊戲手柄" msgid "4-button flight yoke" -msgstr "" +msgstr "4 按鈕飛行搖桿" msgid "2-button flight yoke with throttle" -msgstr "" +msgstr "2 按鈕飛行搖桿,含節流閥" msgid "4-button flight yoke with throttle" -msgstr "" +msgstr "4 按鈕飛行搖桿,含節流閥" msgid "Win95 Steering Wheel (3-axis, 4-button)" -msgstr "" +msgstr "Win95 方向盤 (3 軸, 4 鍵搖桿)" msgid "None" msgstr "無" @@ -952,13 +952,13 @@ msgid "Internal device" msgstr "內部裝置" msgid "&File" -msgstr "" +msgstr "檔案(&F)" msgid "&New machine..." -msgstr "" +msgstr "新機器(&N)..." msgid "&Check for updates..." -msgstr "" +msgstr "檢查更新(&C)..." msgid "Exit" msgstr "退出" @@ -1057,7 +1057,7 @@ msgid "Pause execution" msgstr "暫停執行" msgid "Ctrl+Alt+Del" -msgstr "" +msgstr "Ctrl+Alt+Del" msgid "Press Ctrl+Alt+Del" msgstr "按下 Ctrl+Alt+Del" @@ -1069,265 +1069,271 @@ msgid "Hard reset" msgstr "硬重設" msgid "Force shutdown" -msgstr "" +msgstr "強制關機" msgid "Start" -msgstr "" +msgstr "開始" msgid "Not running" -msgstr "" +msgstr "未執行" msgid "Running" -msgstr "" +msgstr "運行" msgid "Paused" -msgstr "" +msgstr "已暫停" -msgid "Paused (Waiting)" -msgstr "" +msgid "Waiting" +msgstr "等待" msgid "Powered Off" -msgstr "" +msgstr "電源關閉" -msgid "waiting" -msgstr "" +msgid "%n running" +msgstr "%n 運行" -msgid "total" -msgstr "" +msgid "%n paused" +msgstr "%n 已暫停" + +msgid "%n waiting" +msgstr "%n 等待" + +msgid "%1 total" +msgstr "%1 總計" + +msgid "VMs: %1" +msgstr "虛擬機器:%1" msgid "System Directory:" -msgstr "" +msgstr "系統目錄:" msgid "Choose directory" -msgstr "" +msgstr "選擇目錄" msgid "Choose configuration file" -msgstr "" +msgstr "選擇組態檔案" msgid "86Box configuration files (86box.cfg)" -msgstr "" +msgstr "86Box 配置檔案 (86box.cfg)" msgid "Configuration read failed" -msgstr "" +msgstr "設定讀取失敗" msgid "Unable to open the selected configuration file for reading: %1" -msgstr "" +msgstr "無法開啟選取的設定檔進行讀取: %1" msgid "Use regular expressions in search box" -msgstr "" +msgstr "在搜尋方塊中使用正則表達式" msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?" -msgstr "" +msgstr "%1 台機器目前處於活動狀態。您確定要退出虛擬機器管理員嗎?" msgid "Add new system wizard" -msgstr "" +msgstr "新增系統精靈" msgid "Introduction" -msgstr "" +msgstr "簡介" msgid "This will help you add a new system to 86Box." -msgstr "" +msgstr "這將有助於您在 86Box 中加入新系統。" msgid "New configuration" -msgstr "" +msgstr "新配置" msgid "Complete" -msgstr "" +msgstr "完成" msgid "The wizard will now launch the configuration for the new system." -msgstr "" +msgstr "精靈現在會啟動新系統的組態。" msgid "Use existing configuration" -msgstr "" +msgstr "使用現有組態" msgid "Type some notes here" -msgstr "" +msgstr "在此輸入一些備註" msgid "Paste the contents of the existing configuration file into the box below." -msgstr "" +msgstr "將現有組態檔案的內容貼到下面的方塊中。" msgid "Load configuration from file" -msgstr "" - -msgid "System Name" -msgstr "" +msgstr "從檔案載入設定" msgid "System name" -msgstr "" +msgstr "系統名稱" msgid "System name:" -msgstr "" +msgstr "系統名稱:" msgid "System name cannot contain certain characters" -msgstr "" +msgstr "系統名稱不能包含特定字元" msgid "System name already exists" -msgstr "" +msgstr "系統名稱已存在" msgid "Please enter a directory for the system" -msgstr "" +msgstr "請輸入系統目錄" msgid "Directory does not exist" -msgstr "" +msgstr "目錄不存在" msgid "A new directory for the system will be created in the selected directory above" -msgstr "" +msgstr "系統的新目錄將會在上述選取的目錄中建立" msgid "System location:" -msgstr "" - -msgid "System Location" -msgstr "" +msgstr "系統位置:" msgid "System name and location" -msgstr "" +msgstr "系統名稱和位置" msgid "Enter the name of the system and choose the location" -msgstr "" +msgstr "輸入系統名稱並選擇位置" msgid "Enter the name of the system" -msgstr "" +msgstr "輸入系統名稱" msgid "Please enter a system name" -msgstr "" +msgstr "請輸入系統名稱" -msgid "Display Name (optional)" -msgstr "" +msgid "Display name (optional):" +msgstr "顯示名稱 (可選):" msgid "Display name:" -msgstr "" +msgstr "顯示名稱:" msgid "Set display name" -msgstr "" +msgstr "設定顯示名稱" msgid "Enter the new display name (blank to reset)" -msgstr "" +msgstr "輸入新的顯示名稱 (空白表示重設)" msgid "Change &display name..." -msgstr "" +msgstr "變更顯示名稱(&D)..." msgid "Context Menu" -msgstr "" +msgstr "內容選單" msgid "&Open folder..." -msgstr "" +msgstr "開啟資料夾(&O)..." -msgid "Open &printer tray..." -msgstr "" +msgid "Open p&rinter tray..." +msgstr "打開印表機托盤(&R)..." msgid "Set &icon..." -msgstr "" +msgstr "設定圖示(&I)..." msgid "Select an icon" -msgstr "" +msgstr "選擇圖示" msgid "C&lone..." -msgstr "" +msgstr "克隆(&L)..." msgid "Virtual machine \"%1\" (%2) will be cloned into:" -msgstr "" +msgstr "虛擬機器 \"%1\" (%2) 將被複製到:" msgid "Directory %1 already exists" -msgstr "" +msgstr "目錄 %1 已經存在" msgid "You cannot use the following characters in the name: %1" -msgstr "" +msgstr "您不能在名稱中使用下列字元:%1" msgid "Clone" -msgstr "" +msgstr "克隆" msgid "Failed to create directory for cloned VM" -msgstr "" +msgstr "為複製的虛擬機器建立目錄失敗" msgid "Failed to clone VM." -msgstr "" +msgstr "複製虛擬機器失敗。" msgid "Directory in use" -msgstr "" +msgstr "使用中的目錄" msgid "The selected directory is already in use. Please select a different directory." -msgstr "" +msgstr "所選目錄已被使用。請選擇其他目錄。" msgid "Create directory failed" -msgstr "" +msgstr "建立目錄失敗" msgid "Unable to create the directory for the new system" -msgstr "" +msgstr "無法為新系統建立目錄" msgid "Configuration write failed" -msgstr "" +msgstr "設定寫入失敗" msgid "Unable to open the configuration file at %1 for writing" -msgstr "" +msgstr "無法開啟 %1 的設定檔進行寫入" msgid "Error adding system" -msgstr "" - -msgid "Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added." -msgstr "" +msgstr "錯誤新增系統" msgid "Remove directory failed" -msgstr "" +msgstr "移除目錄失敗" msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually." -msgstr "" +msgstr "機器目錄中的某些檔案無法刪除。請手動刪除它們。" msgid "Build" -msgstr "" +msgstr "建置" msgid "Version" -msgstr "" +msgstr "版本" + +msgid "An update to 86Box is available: %1 %2" +msgstr "86Box 的更新可用: %1 %2" + +msgid "An error has occurred while checking for updates: %1" +msgstr "檢查更新時發生錯誤: %1" msgid "An update to 86Box is available!" -msgstr "" +msgstr "86Box 的更新可用!" msgid "Warning" -msgstr "" +msgstr "警告" msgid "&Kill" -msgstr "" +msgstr "強制終止(&K)" msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?" -msgstr "" +msgstr "強行終止虛擬機器可能會導致資料遺失。只有在 86Box 過程卡住時才執行此操作。\n\n您真的希望強制終止虛擬機器 \"%1\"?" msgid "&Delete" -msgstr "" +msgstr "刪除(&D)" msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!" -msgstr "" +msgstr "您真的想要刪除虛擬機器 \"%1\" 及其所有檔案嗎?此操作無法撤銷!" msgid "Show &config file" -msgstr "" +msgstr "顯示設定檔(&C)" msgid "No screenshot" -msgstr "" +msgstr "沒有截圖" msgid "Search" -msgstr "" +msgstr "搜尋" msgid "Searching for VMs..." -msgstr "" +msgstr "搜尋虛擬機器..." msgid "Found %1" -msgstr "" +msgstr "找到 %1" msgid "System" -msgstr "" +msgstr "系統" msgid "Storage" -msgstr "" +msgstr "儲存" msgid "Disk %1: " -msgstr "" +msgstr "磁碟 %1: " msgid "No disks" -msgstr "" +msgstr "無磁碟" msgid "Audio" -msgstr "" +msgstr "音訊" msgid "Audio:" -msgstr "" +msgstr "音訊:" msgid "ACPI shutdown" msgstr "ACPI 關機" @@ -1626,9 +1632,6 @@ msgstr "MCA 裝置清單:" msgid "&Tablet tool" msgstr "平板工具(&T)" -msgid "Qt (OpenGL &ES)" -msgstr "Qt (OpenGL &ES)" - msgid "About &Qt" msgstr "關於 &Qt" @@ -1672,7 +1675,7 @@ msgid "Null Driver" msgstr "空驅動程式" msgid "NIC:" -msgstr "" +msgstr "NIC:" msgid "NIC %1 (%2) %3" msgstr "網路卡 %1 (%2) %3" @@ -1744,7 +1747,7 @@ msgid "MiB" msgstr "MiB" msgid "GiB" -msgstr "" +msgstr "GiB" msgid "Network Card #1" msgstr "網路卡 1" @@ -1792,22 +1795,22 @@ msgid "Renderer &options..." msgstr "渲染器選項...(&O)" msgid "PC/XT Keyboard" -msgstr "" +msgstr "PC/XT 鍵盤" msgid "AT Keyboard" -msgstr "" +msgstr "AT 鍵盤" msgid "AX Keyboard" -msgstr "" +msgstr "AX 鍵盤" msgid "PS/2 Keyboard" -msgstr "" +msgstr "PS/2 鍵盤" msgid "PS/55 Keyboard" -msgstr "" +msgstr "PS/55 鍵盤" msgid "Keys" -msgstr "" +msgstr "鑰匙" msgid "Logitech/Microsoft Bus Mouse" msgstr "Logitech/Microsoft 匯流排滑鼠" @@ -1819,13 +1822,13 @@ msgid "Mouse Systems Serial Mouse" msgstr "Mouse Systems 序列滑鼠" msgid "Mouse Systems Bus Mouse" -msgstr "" +msgstr "Mouse Systems 匯流排滑鼠" msgid "Microsoft Serial Mouse" msgstr "Microsoft 序列滑鼠" msgid "Microsoft Serial BallPoint" -msgstr "" +msgstr "Microsoft BallPoint 序列滑鼠" msgid "Logitech Serial Mouse" msgstr "Logitech 序列滑鼠" @@ -1834,13 +1837,13 @@ msgid "PS/2 Mouse" msgstr "PS/2 滑鼠" msgid "PS/2 QuickPort Mouse" -msgstr "" +msgstr "PS/2 QuickPort 滑鼠" msgid "3M MicroTouch (Serial)" msgstr "3M MicroTouch (序列)" msgid "Default Baud rate" -msgstr "" +msgstr "預設波特率" msgid "[COM] Standard Hayes-compliant Modem" msgstr "[COM] 標準 Hayes 相容的數據機" @@ -1867,52 +1870,52 @@ msgid "MIDI Input Device" msgstr "MIDI 輸入裝置" msgid "BIOS file" -msgstr "" +msgstr "BIOS 檔案" msgid "BIOS file (ROM #1)" -msgstr "" +msgstr "BIOS 檔案 (ROM 1)" msgid "BIOS file (ROM #2)" -msgstr "" +msgstr "BIOS 檔案 (ROM 2)" msgid "BIOS file (ROM #3)" -msgstr "" +msgstr "BIOS 檔案 (ROM 3)" msgid "BIOS file (ROM #4)" -msgstr "" +msgstr "BIOS 檔案 (ROM 4)" msgid "BIOS address" msgstr "BIOS 位址" msgid "BIOS address (ROM #1)" -msgstr "" +msgstr "BIOS 位址 (ROM 1)" msgid "BIOS address (ROM #2)" -msgstr "" +msgstr "BIOS 位址 (ROM 2)" msgid "BIOS address (ROM #3)" -msgstr "" +msgstr "BIOS 位址 (ROM 3)" msgid "BIOS address (ROM #4)" -msgstr "" +msgstr "BIOS 位址 (ROM 4)" msgid "Enable BIOS extension ROM Writes" msgstr "啟用 BIOS 擴充 ROM 寫入" msgid "Enable BIOS extension ROM Writes (ROM #1)" -msgstr "" +msgstr "啟用 BIOS 擴充 ROM 寫入 (ROM 1)" msgid "Enable BIOS extension ROM Writes (ROM #2)" -msgstr "" +msgstr "啟用 BIOS 擴充 ROM 寫入 (ROM 2)" msgid "Enable BIOS extension ROM Writes (ROM #3)" -msgstr "" +msgstr "啟用 BIOS 擴充 ROM 寫入 (ROM 3)" msgid "Enable BIOS extension ROM Writes (ROM #4)" -msgstr "" +msgstr "啟用 BIOS 擴充 ROM 寫入 (ROM 4)" msgid "Linear framebuffer base" -msgstr "" +msgstr "線性圖框緩衝記憶體的底座" msgid "Address" msgstr "位址" @@ -1921,25 +1924,25 @@ msgid "IRQ" msgstr "IRQ" msgid "Serial port IRQ" -msgstr "" +msgstr "序列埠的 IRQ" msgid "Parallel port IRQ" -msgstr "" +msgstr "平行埠的 IRQ" msgid "BIOS Revision" msgstr "BIOS 版本" msgid "BIOS Version" -msgstr "" +msgstr "BIOS 版本" msgid "BIOS Language" -msgstr "" +msgstr "BIOS 語言" msgid "IBM 5161 Expansion Unit" -msgstr "" +msgstr "IBM 5161 擴充裝置" msgid "IBM Cassette Basic" -msgstr "" +msgstr "IBM 磁帶式 BASIC" msgid "Translate 26 -> 17" msgstr "轉換 26 -> 17" @@ -1957,16 +1960,16 @@ msgid "BIOS size" msgstr "BIOS 大小" msgid "BIOS size (ROM #1)" -msgstr "" +msgstr "BIOS 大小 (ROM )" msgid "BIOS size (ROM #2)" -msgstr "" +msgstr "BIOS 大小 (ROM 2)" msgid "BIOS size (ROM #3)" -msgstr "" +msgstr "BIOS 大小 (ROM 3)" msgid "BIOS size (ROM #4)" -msgstr "" +msgstr "BIOS 大小 (ROM 4)" msgid "Map C0000-C7FFF as UMB" msgstr "映射 C0000-C7FFF 為 UMB" @@ -2044,7 +2047,7 @@ msgid "Interpolation Method" msgstr "插值方法" msgid "Dynamic Sample Loading" -msgstr "" +msgstr "樣品的動態載入" msgid "Reverb Output Gain" msgstr "迴響輸出增益" @@ -2134,10 +2137,10 @@ msgid "Enable Game port" msgstr "啟用遊戲埠" msgid "SID Model" -msgstr "" +msgstr "SID 型號" msgid "SID Filter Strength" -msgstr "" +msgstr "SID 過濾強度" msgid "Surround module" msgstr "環繞聲模組" @@ -2152,10 +2155,10 @@ msgid "SB Address" msgstr "SB 位址" msgid "Adlib Address" -msgstr "" +msgstr "Adlib 位址" msgid "Use EEPROM setting" -msgstr "" +msgstr "使用 EEPROM 中的設定" msgid "WSS IRQ" msgstr "WSS IRQ" @@ -2242,13 +2245,13 @@ msgid "Blend" msgstr "混合" msgid "Font" -msgstr "" +msgstr "字型" msgid "Bilinear filtering" msgstr "雙線性濾波" msgid "Video chroma-keying" -msgstr "" +msgstr "視訊色鍵" msgid "Dithering" msgstr "抖動" @@ -2293,31 +2296,31 @@ msgid "EMS mode" msgstr "EMS 模式" msgid "EMS Address" -msgstr "" +msgstr "EMS 位址" msgid "EMS 1 Address" -msgstr "" +msgstr "EMS 1 位址" msgid "EMS 2 Address" -msgstr "" +msgstr "EMS 2 位址" msgid "EMS Memory Size" -msgstr "" +msgstr "EMS 記憶體大小" msgid "EMS 1 Memory Size" -msgstr "" +msgstr "EMS 1 記憶體大小" msgid "EMS 2 Memory Size" -msgstr "" +msgstr "EMS 2 記憶體大小" msgid "Enable EMS" -msgstr "" +msgstr "啟用 EMS" msgid "Enable EMS 1" -msgstr "" +msgstr "啟用 EMS 1" msgid "Enable EMS 2" -msgstr "" +msgstr "啟用 EMS 2" msgid "Address for > 2 MB" msgstr "> 2 MB 的位址" @@ -2377,7 +2380,7 @@ msgid "Five + Wheel" msgstr "五鍵 + 滾輪" msgid "Five + 2 Wheels" -msgstr "" +msgstr "五鍵 + 2 滾輪" msgid "A3 - SMT2 Serial / SMT3(R)V" msgstr "A3 - SMT2 序列 / SMT3(R)V" @@ -2442,6 +2445,9 @@ msgstr "256 KB" msgid "Composite" msgstr "複合視訊" +msgid "True color" +msgstr "真實色彩" + msgid "Old" msgstr "舊" @@ -2476,13 +2482,13 @@ msgid "Linear interpolation" msgstr "線性插補" msgid "Has secondary 8x8 character set" -msgstr "" +msgstr "具有輔助 8x8 字元集" msgid "Has Quadcolor II daughter board" -msgstr "" +msgstr "具有 Quadcolor II 子板" msgid "Alternate monochrome contrast" -msgstr "" +msgstr "交替單色對比" msgid "128 KB" msgstr "128 KB" @@ -2518,7 +2524,7 @@ msgid "Gray" msgstr "灰色" msgid "Grayscale" -msgstr "" +msgstr "灰階" msgid "Color" msgstr "顏色" @@ -2536,10 +2542,10 @@ msgid "Bochs latest" msgstr "Bochs 最新" msgid "Apply overscan deltas" -msgstr "" +msgstr "套用過掃描三角區" msgid "Mono Interlaced" -msgstr "" +msgstr "單色隔行扫描" msgid "Mono Non-Interlaced" msgstr "單色非隔行掃描" @@ -2554,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics" msgstr "3Dfx Voodoo 圖形" msgid "3Dfx Voodoo 2" -msgstr "" +msgstr "3Dfx Voodoo 2" msgid "Obsidian SB50 + Amethyst (2 TMUs)" msgstr "Obsidian SB50 + Amethyst (2 TMU)" @@ -2626,7 +2632,7 @@ msgid "Named Pipe (Server)" msgstr "已命名管道 (伺服器)" msgid "Named Pipe (Client)" -msgstr "" +msgstr "已命名管道 (用戶端)" msgid "Host Serial Passthrough" msgstr "主機序列埠的直通" @@ -2644,28 +2650,28 @@ msgid "High performance impact" msgstr "對效能影響大" msgid "[Generic] RAM Disk (max. speed)" -msgstr "[Generic] RAM 磁碟 (最大速度)" +msgstr "[通用] RAM 磁碟 (最大速度)" msgid "[Generic] 1989 (3500 RPM)" -msgstr "" +msgstr "[通用] 1989 (3500 轉速)" msgid "[Generic] 1992 (3600 RPM)" -msgstr "" +msgstr "[通用] 1992 (3600 轉速)" msgid "[Generic] 1994 (4500 RPM)" -msgstr "" +msgstr "[通用] 1994 (4500 轉速)" msgid "[Generic] 1996 (5400 RPM)" -msgstr "" +msgstr "[通用] 1996 (5400 轉速)" msgid "[Generic] 1997 (5400 RPM)" -msgstr "" +msgstr "[通用] 1997 (5400 轉速)" msgid "[Generic] 1998 (5400 RPM)" -msgstr "" +msgstr "[通用] 1998 (5400 轉速)" msgid "[Generic] 2000 (7200 RPM)" -msgstr "" +msgstr "[通用] 2000 (7200 轉速)" msgid "IBM 8514/A clone (ISA)" msgstr "IBM 8514/A 克隆 (ISA)" @@ -2674,10 +2680,10 @@ msgid "Vendor" msgstr "製造商" msgid "30 Hz (JMP2 = 1)" -msgstr "" +msgstr "30 Hz (JMP2 = 1)" msgid "60 Hz (JMP2 = 2)" -msgstr "" +msgstr "60 Hz (JMP2 = 2)" msgid "Generic PC/XT Memory Expansion" msgstr "通用 PC/XT 記憶體擴充" @@ -2692,223 +2698,259 @@ msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for t msgstr "通用 ESC/P 點矩陣印表機的模擬需要 \"roms/printer/fonts\" 目錄中的 TrueType 字體。" msgid "Inhibit multimedia keys" -msgstr "" +msgstr "禁止多媒體按鍵" msgid "Ask for confirmation before saving settings" -msgstr "" +msgstr "儲存設定前要求確認" msgid "Ask for confirmation before hard resetting" -msgstr "" +msgstr "硬體重設前要求確認" msgid "Ask for confirmation before quitting" -msgstr "" +msgstr "退出前請先確認" msgid "Options" -msgstr "" +msgstr "選項" msgid "Model" -msgstr "" +msgstr "型號" msgid "Model:" -msgstr "" +msgstr "型號:" msgid "Failed to initialize Vulkan renderer." -msgstr "" +msgstr "初始化 Vulkan 渲染器失敗。" msgid "GLSL Error" -msgstr "" +msgstr "GLSL 錯誤" msgid "Could not load shader: %1" -msgstr "" +msgstr "無法載入著色器: %1" msgid "OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2" -msgstr "" +msgstr "需要 OpenGL 版本 3.0 或更高。目前的 GLSL 版本為 %1.%2" msgid "Could not load texture: %1" -msgstr "" +msgstr "無法載入材質: %1" msgid "Could not compile shader:\n\n%1" -msgstr "" +msgstr "無法編譯著色器:\n\n%1" msgid "Program not linked:\n\n%1" -msgstr "" +msgstr "程式未連結:\n\n%1" msgid "Shader Manager" -msgstr "" +msgstr "著色器管理員" msgid "Shader Configuration" -msgstr "" +msgstr "著色器組態" msgid "Add" -msgstr "" +msgstr "新增" msgid "Move up" -msgstr "" +msgstr "上移" msgid "Move down" -msgstr "" +msgstr "下移" msgid "Could not load file %1" -msgstr "" +msgstr "無法載入檔案 %1" msgid "Key Bindings:" -msgstr "" +msgstr "按鍵綁定:" msgid "Action" -msgstr "" +msgstr "行動" msgid "Keybind" -msgstr "" +msgstr "鍵盤綁定" msgid "Clear binding" -msgstr "" +msgstr "透明裝訂" msgid "Bind" -msgstr "" +msgstr "綁定" msgid "Bind Key" -msgstr "" +msgstr "綁定按鍵" msgid "Enter key combo:" -msgstr "" +msgstr "輸入組合鍵:" msgid "Bind conflict" -msgstr "" +msgstr "綁定衝突" msgid "This key combo is already in use." -msgstr "" +msgstr "此組合鍵已在使用中。" msgid "Send Control+Alt+Del" -msgstr "" +msgstr "傳送 Control+Alt+Del" msgid "Send Control+Alt+Escape" -msgstr "" +msgstr "傳送 Control+Alt+Escape" msgid "Toggle fullscreen" -msgstr "" +msgstr "切換全螢幕" msgid "Screenshot" -msgstr "" +msgstr "螢幕截圖" msgid "Release mouse pointer" -msgstr "" +msgstr "放開滑鼠游標" msgid "Toggle pause" -msgstr "" +msgstr "切換暫停" msgid "Toggle mute" -msgstr "" +msgstr "切換靜音" msgid "Text files" -msgstr "" +msgstr "文字檔案" msgid "ROM files" -msgstr "" +msgstr "ROM 檔案" msgid "SoundFont files" -msgstr "" +msgstr "SoundFont 檔案" msgid "Local Switch" -msgstr "" +msgstr "本地交換器" msgid "Remote Switch" -msgstr "" +msgstr "遙控交換器" msgid "Switch:" -msgstr "" +msgstr "交換器:" msgid "Hub Mode" -msgstr "" +msgstr "集線器模式" msgid "Hostname:" -msgstr "" +msgstr "主機名稱:" -msgid "ISA RTC" -msgstr "" +msgid "ISA RAM:" +msgstr "ISA RAM:" -msgid "ISA RAM" -msgstr "" - -msgid "ISA ROM" -msgstr "" +msgid "ISA ROM:" +msgstr "ISA ROM:" msgid "&Wipe NVRAM" -msgstr "" +msgstr "清除(&W) NVRAM" msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?" -msgstr "" +msgstr "這將刪除位於 (\"nvr\" 子目錄中的) 虛擬機器的所有 NVRAM (和相關) 檔案。如果適用的話,您必須重新設定 BIOS (可能還有虛擬機器內的其他裝置) 設定。\n\n您確定要清除虛擬機 \"%1\" 的所有 NVRAM 內容嗎?" msgid "Success" -msgstr "" +msgstr "成功" msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgstr "成功清除虛擬機 \"%1\" 的 NVRAM 內容" -msgid "An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"" -msgstr "" +msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"" +msgstr "嘗試清除虛擬機 \"%1\" 的 NVRAM 內容時發生錯誤" msgid "%1 VM Manager" -msgstr "" +msgstr "%1 虛擬機器管理員" msgid "%n disk(s)" -msgstr "" +msgstr "%n 磁碟" msgid "Unknown Status" -msgstr "" +msgstr "狀態不明" msgid "No Machines Found!" -msgstr "" +msgstr "找不到機器!" msgid "Check for updates on startup" -msgstr "" +msgstr "啟動時檢查更新" msgid "Unable to determine release information" -msgstr "" +msgstr "無法確定釋放資訊" msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later." -msgstr "" +msgstr "檢查更新時出錯:\n'\n%1\n\n請稍後再試。" msgid "Update check complete" -msgstr "" +msgstr "更新檢查完成" + +msgid "stable" +msgstr "穩定" + +msgid "beta" +msgstr "測試版" msgid "You are running the latest %1 version of 86Box: %2" -msgstr "" +msgstr "您正在執行 86Box 的最新 %1 版本: %2" msgid "version" -msgstr "" +msgstr "版本" msgid "build" -msgstr "" +msgstr "建置" -msgid "You are currently running %1 %2. " -msgstr "" +msgid "You are currently running version %1." +msgstr "您目前執行的是 %1 版本。" -msgid "%1 %2 is now available. %3Would you like to visit the download page?" -msgstr "" +msgid "Version %1 is now available." +msgstr "版本 %1 現在可用。" + +msgid "You are currently running build %1." +msgstr "您目前執行的是 %1 建置。" + +msgid "Build %1 is now available." +msgstr "建置 %1 現在可用。" + +msgid "Would you like to visit the download page?" +msgstr "您要造訪下載頁面嗎?" msgid "Visit download page" -msgstr "" +msgstr "造訪下載頁面" msgid "Update check" -msgstr "" +msgstr "更新檢查" -msgid "Checking for updates.." -msgstr "" +msgid "Checking for updates..." +msgstr "檢查更新..." msgid "86Box Update" -msgstr "" +msgstr "86Box 更新" msgid "Release notes:" -msgstr "" +msgstr "發佈說明:" -#~ msgid "HD Controller:" -#~ msgstr "硬碟控制器:" +msgid "%1 Hz" +msgstr "%1 Hz" -#~ msgid "ZIP drives:" -#~ msgstr "ZIP 磁碟機:" +msgid "Virtual machine crash" +msgstr "虛擬機當機" -#~ msgid "ZIP %1 %2 (%3): %4" -#~ msgstr "ZIP %1 %2 (%3): %4" +msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2." +msgstr "虛擬機 \"%1\" 的進程以退出代碼 %2 意外終止。" -#~ msgid "ZIP images" -#~ msgstr "ZIP 映像" +msgid "The system will not be added." +msgstr "系統將不會新增。" + +msgid "&Update mouse every CPU frame" +msgstr "每 CPU 幀更新滑鼠(&U)" + +msgid "Hue" +msgstr "色調" + +msgid "Saturation" +msgstr "飽和度" + +msgid "Contrast" +msgstr "對比" + +msgid "Brightness" +msgstr "亮度" + +msgid "Sharpness" +msgstr "銳利度" + +msgid "&CGA composite settings..." +msgstr "CGA 複合模式的設定...(&C)" + +msgid "CGA composite settings" +msgstr "CGA 複合模式的設定" diff --git a/src/qt/qt_about.cpp b/src/qt/qt_about.cpp index 96cde8522..6c34c2add 100644 --- a/src/qt/qt_about.cpp +++ b/src/qt/qt_about.cpp @@ -51,7 +51,7 @@ About::About(QWidget *parent) #endif versioninfo.append(QString(" [%1, %2]").arg(QSysInfo::buildCpuArchitecture(), tr(DYNAREC_STR))); setText(QString("%3%1%2").arg(EMU_VERSION_FULL, versioninfo, tr("86Box v"))); - setInformativeText(tr("An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information.")); + setInformativeText(tr("An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information.").replace("\n", "
")); setWindowTitle(tr("About 86Box")); const auto closeButton = addButton("OK", QMessageBox::ButtonRole::AcceptRole); setEscapeButton(closeButton); diff --git a/src/qt/qt_cgasettingsdialog.cpp b/src/qt/qt_cgasettingsdialog.cpp new file mode 100644 index 000000000..ee9aa86b6 --- /dev/null +++ b/src/qt/qt_cgasettingsdialog.cpp @@ -0,0 +1,94 @@ +#include "qt_cgasettingsdialog.hpp" +#include "ui_qt_cgasettingsdialog.h" + +#include + +extern "C" +{ +#include <86box/86box.h> +#include <86box/plat.h> +#include <86box/vid_cga_comp.h> +} + +CGASettingsDialog::CGASettingsDialog(QWidget *parent) + : QDialog(parent) + , ui(new Ui::CGASettingsDialog) +{ + ui->setupUi(this); + + cga_hue = vid_cga_comp_hue; + cga_saturation = vid_cga_comp_saturation; + cga_brightness = vid_cga_comp_brightness; + cga_contrast = vid_cga_comp_contrast; + cga_sharpness = vid_cga_comp_sharpness; + + ui->horizontalSliderHue->setValue(vid_cga_comp_hue); + ui->horizontalSliderSaturation->setValue(vid_cga_comp_saturation); + ui->horizontalSliderBrightness->setValue(vid_cga_comp_brightness); + ui->horizontalSliderContrast->setValue(vid_cga_comp_contrast); + ui->horizontalSliderSharpness->setValue(vid_cga_comp_sharpness); + + connect(ui->buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &CGASettingsDialog::applySettings); + connect(ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, [this] + { + ui->horizontalSliderHue->setValue(0); + ui->horizontalSliderSaturation->setValue(100); + ui->horizontalSliderBrightness->setValue(0); + ui->horizontalSliderContrast->setValue(100); + ui->horizontalSliderSharpness->setValue(0); + }); + + connect(ui->horizontalSliderHue, &QSlider::valueChanged, this, [this] { updateDisplay(); } ); + connect(ui->horizontalSliderSaturation, &QSlider::valueChanged, this, [this] { updateDisplay(); } ); + connect(ui->horizontalSliderBrightness, &QSlider::valueChanged, this, [this] { updateDisplay(); } ); + connect(ui->horizontalSliderContrast, &QSlider::valueChanged, this, [this] { updateDisplay(); } ); + connect(ui->horizontalSliderSharpness, &QSlider::valueChanged, this, [this] { updateDisplay(); } ); +} + +CGASettingsDialog::~CGASettingsDialog() +{ + delete ui; +} + +void CGASettingsDialog::updateDisplay() +{ + auto temp_cga_comp_hue = ui->horizontalSliderHue->value(); + auto temp_cga_comp_saturation = ui->horizontalSliderSaturation->value(); + auto temp_cga_comp_brightness = ui->horizontalSliderBrightness->value(); + auto temp_cga_comp_contrast = ui->horizontalSliderContrast->value(); + auto temp_cga_comp_sharpness = ui->horizontalSliderSharpness->value(); + cga_comp_reload(temp_cga_comp_brightness, temp_cga_comp_saturation, temp_cga_comp_sharpness, temp_cga_comp_hue, temp_cga_comp_contrast); +} + +void CGASettingsDialog::applySettings() +{ + vid_cga_comp_hue = ui->horizontalSliderHue->value(); + vid_cga_comp_saturation = ui->horizontalSliderSaturation->value(); + vid_cga_comp_brightness = ui->horizontalSliderBrightness->value(); + vid_cga_comp_contrast = ui->horizontalSliderContrast->value(); + vid_cga_comp_sharpness = ui->horizontalSliderSharpness->value(); + cga_comp_reload(vid_cga_comp_brightness, vid_cga_comp_saturation, vid_cga_comp_sharpness, vid_cga_comp_hue, vid_cga_comp_contrast); + + cga_hue = vid_cga_comp_hue; + cga_saturation = vid_cga_comp_saturation; + cga_brightness = vid_cga_comp_brightness; + cga_contrast = vid_cga_comp_contrast; + cga_sharpness = vid_cga_comp_sharpness; +} + +void CGASettingsDialog::on_buttonBox_accepted() +{ + applySettings(); +} + +void CGASettingsDialog::on_buttonBox_rejected() +{ + vid_cga_comp_hue = cga_hue; + vid_cga_comp_saturation = cga_saturation; + vid_cga_comp_brightness = cga_brightness; + vid_cga_comp_contrast = cga_contrast; + vid_cga_comp_sharpness = cga_sharpness; + + cga_comp_reload(vid_cga_comp_brightness, vid_cga_comp_saturation, vid_cga_comp_sharpness, vid_cga_comp_hue, vid_cga_comp_contrast); +} + diff --git a/src/qt/qt_cgasettingsdialog.hpp b/src/qt/qt_cgasettingsdialog.hpp new file mode 100644 index 000000000..e0a4e76d1 --- /dev/null +++ b/src/qt/qt_cgasettingsdialog.hpp @@ -0,0 +1,31 @@ +#ifndef QT_CGASETTINGSDIALOG_HPP +#define QT_CGASETTINGSDIALOG_HPP + +#include + +namespace Ui { +class CGASettingsDialog; +} + +class CGASettingsDialog : public QDialog { + Q_OBJECT + +public: + explicit CGASettingsDialog(QWidget *parent = nullptr); + ~CGASettingsDialog(); + +private slots: + void on_buttonBox_accepted(); + + void on_buttonBox_rejected(); + +private: + Ui::CGASettingsDialog *ui; + + void applySettings(); + void updateDisplay(); + + int cga_hue, cga_saturation, cga_sharpness, cga_brightness, cga_contrast; +}; + +#endif // QT_CGASETTINGSDIALOG_HPP diff --git a/src/qt/qt_cgasettingsdialog.ui b/src/qt/qt_cgasettingsdialog.ui new file mode 100644 index 000000000..7367b2099 --- /dev/null +++ b/src/qt/qt_cgasettingsdialog.ui @@ -0,0 +1,167 @@ + + + CGASettingsDialog + + + + 0 + 0 + 400 + 300 + + + + CGA composite settings + + + + QLayout::SizeConstraint::SetFixedSize + + + + + -100 + + + 100 + + + Qt::Orientation::Horizontal + + + + + + + 360 + + + 100 + + + Qt::Orientation::Horizontal + + + + + + + Hue + + + + + + + -50 + + + 50 + + + Qt::Orientation::Horizontal + + + + + + + Qt::Orientation::Horizontal + + + QDialogButtonBox::StandardButton::Apply|QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok|QDialogButtonBox::StandardButton::Reset + + + + + + + 360 + + + 100 + + + Qt::Orientation::Horizontal + + + + + + + Contrast + + + + + + + -360 + + + 360 + + + Qt::Orientation::Horizontal + + + + + + + Sharpness + + + + + + + Saturation + + + + + + + Brightness + + + + + + + + + buttonBox + accepted() + CGASettingsDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + CGASettingsDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/qt/qt_downloader.cpp b/src/qt/qt_downloader.cpp index 329aeeafb..49f8a2e55 100644 --- a/src/qt/qt_downloader.cpp +++ b/src/qt/qt_downloader.cpp @@ -31,7 +31,11 @@ Downloader(const DownloadLocation downloadLocation, QObject *parent) : QObject(parent) , file(nullptr) , reply(nullptr) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + , variantData(QMetaType(QMetaType::UnknownType)) +#else , variantData(QVariant::Invalid) +#endif { char PATHBUF[256]; switch (downloadLocation) { diff --git a/src/qt/qt_joystickconfiguration.cpp b/src/qt/qt_joystickconfiguration.cpp index 62a9302d1..2d8910f4a 100644 --- a/src/qt/qt_joystickconfiguration.cpp +++ b/src/qt/qt_joystickconfiguration.cpp @@ -27,10 +27,11 @@ extern "C" { #include #include "qt_models_common.hpp" -JoystickConfiguration::JoystickConfiguration(int type, int joystick_nr, QWidget *parent) +JoystickConfiguration::JoystickConfiguration(int type, uint8_t gameport_nr, int joystick_nr, QWidget *parent) : QDialog(parent) , ui(new Ui::JoystickConfiguration) , type(type) + , gameport_nr(gameport_nr) , joystick_nr(joystick_nr) { ui->setupUi(this); @@ -41,7 +42,7 @@ JoystickConfiguration::JoystickConfiguration(int type, int joystick_nr, QWidget Models::AddEntry(model, plat_joystick_state[c].name, c + 1); } - ui->comboBoxDevice->setCurrentIndex(joystick_state[0][joystick_nr].plat_joystick_nr); + ui->comboBoxDevice->setCurrentIndex(joystick_state[gameport_nr][joystick_nr].plat_joystick_nr); layout()->setSizeConstraint(QLayout::SetFixedSize); } @@ -119,7 +120,7 @@ JoystickConfiguration::on_comboBoxDevice_currentIndexChanged(int index) } int nr_axes = plat_joystick_state[joystick].nr_axes; - int mapping = joystick_state[0][joystick_nr].axis_mapping[c]; + int mapping = joystick_state[gameport_nr][joystick_nr].axis_mapping[c]; if (mapping & POV_X) cbox->setCurrentIndex(nr_axes + (mapping & 3) * 2); else if (mapping & POV_Y) @@ -147,7 +148,7 @@ JoystickConfiguration::on_comboBoxDevice_currentIndexChanged(int index) Models::AddEntry(model, plat_joystick_state[joystick].button[d].name, 0); } - cbox->setCurrentIndex(joystick_state[0][joystick_nr].button_mapping[c]); + cbox->setCurrentIndex(joystick_state[gameport_nr][joystick_nr].button_mapping[c]); ui->ct->addWidget(label, row, 0); ui->ct->addWidget(cbox, row, 1); @@ -179,7 +180,7 @@ JoystickConfiguration::on_comboBoxDevice_currentIndexChanged(int index) Models::AddEntry(model, plat_joystick_state[joystick].axis[d].name, 0); } - int mapping = joystick_state[0][joystick_nr].pov_mapping[c / 2][c & 1]; + int mapping = joystick_state[gameport_nr][joystick_nr].pov_mapping[c / 2][c & 1]; int nr_povs = plat_joystick_state[joystick].nr_povs; if (mapping & POV_X) cbox->setCurrentIndex((mapping & 3) * 2); diff --git a/src/qt/qt_joystickconfiguration.hpp b/src/qt/qt_joystickconfiguration.hpp index 0b185ad73..bff38992a 100644 --- a/src/qt/qt_joystickconfiguration.hpp +++ b/src/qt/qt_joystickconfiguration.hpp @@ -11,7 +11,7 @@ class JoystickConfiguration : public QDialog { Q_OBJECT public: - explicit JoystickConfiguration(int type, int joystick_nr, QWidget *parent = nullptr); + explicit JoystickConfiguration(int type, uint8_t gameport_nr, int joystick_nr, QWidget *parent = nullptr); ~JoystickConfiguration(); int selectedDevice(); @@ -25,6 +25,7 @@ private: Ui::JoystickConfiguration *ui; QList widgets; int type; + int gameport_nr; int joystick_nr; }; diff --git a/src/qt/qt_machinestatus.hpp b/src/qt/qt_machinestatus.hpp index 9dde36a63..bb5058265 100644 --- a/src/qt/qt_machinestatus.hpp +++ b/src/qt/qt_machinestatus.hpp @@ -28,8 +28,13 @@ signals: void dropped(QString); protected: +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + void mousePressEvent(QMouseEvent *event) override { emit clicked(event->globalPosition().toPoint()); } + void mouseDoubleClickEvent(QMouseEvent *event) override { emit doubleClicked(event->globalPosition().toPoint()); } +#else void mousePressEvent(QMouseEvent *event) override { emit clicked(event->globalPos()); } void mouseDoubleClickEvent(QMouseEvent *event) override { emit doubleClicked(event->globalPos()); } +#endif void dragEnterEvent(QDragEnterEvent *event) override { if (event->mimeData()->hasUrls() && event->mimeData()->urls().size() == 1) { diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index f1f0b3b20..6a2ba1a3a 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -66,6 +66,7 @@ extern "C" { # include "qt_rendererstack.hpp" # include "qt_winrawinputfilter.hpp" # include "qt_winmanagerfilter.hpp" +# include "qt_vmmanager_windarkmodefilter.hpp" # include <86box/win.h> # include # include @@ -514,10 +515,6 @@ main_thread_fn() static std::thread *main_thread; -#ifdef Q_OS_WINDOWS -extern bool windows_is_light_theme(); -#endif - int main(int argc, char *argv[]) { @@ -548,7 +545,7 @@ main(int argc, char *argv[]) } QApplication::setAttribute(Qt::AA_NativeWindows); - if (!windows_is_light_theme()) { + if (!util::isWindowsLightTheme()) { QFile f(":qdarkstyle/dark/darkstyle.qss"); if (!f.exists()) { @@ -558,6 +555,10 @@ main(int argc, char *argv[]) QTextStream ts(&f); qApp->setStyleSheet(ts.readAll()); } + QPalette palette(qApp->palette()); + palette.setColor(QPalette::Link, Qt::white); + palette.setColor(QPalette::LinkVisited, Qt::lightGray); + qApp->setPalette(palette); } #endif @@ -584,7 +585,7 @@ main(int argc, char *argv[]) return 0; } - if (!vmm_enabled) + if (!start_vmm) #ifdef Q_OS_MACOS qt_set_sequence_auto_mnemonic(false); #else @@ -616,7 +617,7 @@ main(int argc, char *argv[]) # endif #endif - if (!pc_init_modules()) { + if (!pc_init_roms()) { QMessageBox fatalbox(QMessageBox::Icon::Critical, QObject::tr("No ROMs found"), QObject::tr("86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory."), QMessageBox::Ok); @@ -625,19 +626,34 @@ main(int argc, char *argv[]) return 6; } - if (vmm_enabled) { + if (start_vmm) { // VMManagerMain vmm; // // Hackish until there is a proper solution // QApplication::setApplicationName("86Box VM Manager"); // QApplication::setApplicationDisplayName("86Box VM Manager"); // vmm.show(); // vmm.exec(); - const auto vmm_main_window = new VMManagerMainWindow(); - vmm_main_window->show(); +#ifdef Q_OS_WINDOWS + auto darkModeFilter = std::unique_ptr(new WindowsDarkModeFilter()); + if (darkModeFilter) { + qApp->installNativeEventFilter(darkModeFilter.get()); + } + QTimer::singleShot(0, [&darkModeFilter] { +#else + QTimer::singleShot(0, [] { +#endif + const auto vmm_main_window = new VMManagerMainWindow(); +#ifdef Q_OS_WINDOWS + darkModeFilter.get()->setWindow(vmm_main_window); +#endif + vmm_main_window->show(); + }); QApplication::exec(); return 0; } + pc_init_modules(); + // UUID / copy / move detection if(!util::compareUuid()) { QMessageBox movewarnbox; diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 8c439bb07..ffcf56825 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -35,6 +35,8 @@ #include "qt_rendererstack.hpp" #include "qt_renderercommon.hpp" +#include "qt_cgasettingsdialog.hpp" + extern "C" { #include <86box/86box.h> #include <86box/config.h> @@ -195,6 +197,16 @@ MainWindow::MainWindow(QWidget *parent) ui->stackedWidget->setMouseTracking(true); statusBar()->setVisible(!hide_status_bar); + auto hertz_label = new QLabel; + QTimer* frameRateTimer = new QTimer(this); + frameRateTimer->setInterval(1000); + frameRateTimer->setSingleShot(false); + connect(frameRateTimer, &QTimer::timeout, [hertz_label] { + hertz_label->setText(tr("%1 Hz").arg(QString::number(monitors[0].mon_actualrenderedframes.load()) + (monitors[0].mon_interlace ? "i" : ""))); + }); + statusBar()->addPermanentWidget(hertz_label); + frameRateTimer->start(1000); + num_icon = QIcon(":/settings/qt/icons/num_lock_on.ico"); num_icon_off = QIcon(":/settings/qt/icons/num_lock_off.ico"); scroll_icon = QIcon(":/settings/qt/icons/scroll_lock_on.ico"); @@ -224,16 +236,6 @@ MainWindow::MainWindow(QWidget *parent) kana_label->setToolTip(QShortcut::tr("Kana Lock")); statusBar()->addPermanentWidget(kana_label); - auto hertz_label = new QLabel; - QTimer* frameRateTimer = new QTimer(this); - frameRateTimer->setInterval(1000); - frameRateTimer->setSingleShot(false); - connect(frameRateTimer, &QTimer::timeout, [this, hertz_label] { - hertz_label->setText(tr("%1 Hz").arg(monitors[0].mon_actualrenderedframes.load())); - }); - statusBar()->addPermanentWidget(hertz_label); - frameRateTimer->start(1000); - QTimer* ledKeyboardTimer = new QTimer(this); ledKeyboardTimer->setTimerType(Qt::CoarseTimer); ledKeyboardTimer->setInterval(1); @@ -286,7 +288,7 @@ MainWindow::MainWindow(QWidget *parent) connect(this, &MainWindow::showMessageForNonQtThread, this, &MainWindow::showMessage_, Qt::QueuedConnection); - connect(this, &MainWindow::setTitle, this, [this, toolbar_label](const QString &title) { + connect(this, &MainWindow::setTitle, this, [toolbar_label](const QString &title) { if (dopause && !hide_tool_bar) { toolbar_label->setText(toolbar_label->text() + tr(" - PAUSED")); return; @@ -667,6 +669,9 @@ MainWindow::MainWindow(QWidget *parent) if (do_auto_pause > 0) { ui->actionAuto_pause->setChecked(true); } + if (force_constant_mouse > 0) { + ui->actionUpdate_mouse_every_CPU_frame->setChecked(true); + } #ifdef Q_OS_MACOS ui->actionCtrl_Alt_Del->setShortcutVisibleInContextMenu(true); @@ -725,7 +730,11 @@ MainWindow::MainWindow(QWidget *parent) setContextMenuPolicy(Qt::PreventContextMenu); /* Remove default Shift+F10 handler, which unfocuses keyboard input even with no context menu. */ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + connect(new QShortcut(QKeySequence(Qt::SHIFT | Qt::Key_F10), this), &QShortcut::activated, this, [](){}); +#else connect(new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_F10), this), &QShortcut::activated, this, [](){}); +#endif connect(this, &MainWindow::initRendererMonitor, this, &MainWindow::initRendererMonitorSlot); connect(this, &MainWindow::initRendererMonitorForNonQtThread, this, &MainWindow::initRendererMonitorSlot, Qt::BlockingQueuedConnection); @@ -812,13 +821,11 @@ void MainWindow::onHardResetCompleted() num_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); scroll_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); caps_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); - /* TODO: Base this on keyboard type instead when that's done. */ int ext_ax_kbd = machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD) && (keyboard_type == KEYBOARD_TYPE_AX); int int_ax_kbd = machine_has_flags(machine, MACHINE_KEYBOARD_JIS) && !machine_has_bus(machine, MACHINE_BUS_PS2_PORTS); kana_label->setVisible(ext_ax_kbd || int_ax_kbd); - while (QApplication::overrideCursor()) QApplication::restoreOverrideCursor(); #ifdef USE_WACOM @@ -827,6 +834,13 @@ void MainWindow::onHardResetCompleted() ui->menuTablet_tool->menuAction()->setVisible(false); #endif + bool enable_comp_option = false; + for (int i = 0; i < MONITORS_NUM; i++) { + if (monitors[i].mon_composite) { enable_comp_option = true; break; } + } + + ui->actionCGA_composite_settings->setEnabled(enable_comp_option); + #ifdef ENABLE_NV_LOG /* THIS CODE SUCKS AND THIS DESIGN IS TERRIBLE - EVERYTHING ABOUT IT IS BAD AND WRONG. @@ -1075,7 +1089,9 @@ MainWindow::showEvent(QShowEvent *event) } if (window_remember && vid_resize == 1) { ui->stackedWidget->setFixedSize(window_w, window_h); +#ifndef Q_OS_MACOS QApplication::processEvents(); +#endif this->adjustSize(); } } @@ -1516,7 +1532,7 @@ MainWindow::eventFilter(QObject *receiver, QEvent *event) if (event->type() == QEvent::WindowBlocked) { window_blocked = true; curdopause = dopause; - plat_pause(isShowMessage ? 2 : 1); + plat_pause(isNonPause ? dopause : (isShowMessage ? 2 : 1)); emit setMouseCapture(false); releaseKeyboard(); } else if (event->type() == QEvent::WindowUnblocked) { @@ -1549,6 +1565,13 @@ MainWindow::refreshMediaMenu() int int_ax_kbd = machine_has_flags(machine, MACHINE_KEYBOARD_JIS) && !machine_has_bus(machine, MACHINE_BUS_PS2_PORTS); kana_label->setVisible(ext_ax_kbd || int_ax_kbd); + + bool enable_comp_option = false; + for (int i = 0; i < MONITORS_NUM; i++) { + if (monitors[i].mon_composite) { enable_comp_option = true; break; } + } + + ui->actionCGA_composite_settings->setEnabled(enable_comp_option); } void @@ -1658,11 +1681,12 @@ MainWindow::focusOutEvent(QFocusEvent *event) void MainWindow::on_actionResizable_window_triggered(bool checked) { + hide(); if (checked) { vid_resize = 1; - setWindowFlag(Qt::WindowMaximizeButtonHint, true); - setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, false); setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, false); + setWindowFlag(Qt::WindowMaximizeButtonHint, true); for (int i = 1; i < MONITORS_NUM; i++) { if (monitors[i].target_buffer) { renderers[i]->setWindowFlag(Qt::WindowMaximizeButtonHint, true); @@ -1988,9 +2012,12 @@ MainWindow::on_actionCGA_PCjr_Tandy_EGA_S_VGA_overscan_triggered() void MainWindow::on_actionChange_contrast_for_monochrome_display_triggered() { + startblit(); vid_cga_contrast ^= 1; - cgapal_rebuild(); + for (int i = 0; i < MONITORS_NUM; i++) + cgapal_rebuild_monitor(i); config_save(); + endblit(); } void @@ -2004,6 +2031,16 @@ MainWindow::on_actionAuto_pause_triggered() { do_auto_pause ^= 1; ui->actionAuto_pause->setChecked(do_auto_pause > 0 ? true : false); + config_save(); +} + +void +MainWindow::on_actionUpdate_mouse_every_CPU_frame_triggered() +{ + force_constant_mouse ^= 1; + ui->actionUpdate_mouse_every_CPU_frame->setChecked(force_constant_mouse > 0 ? true : false); + mouse_update_sample_rate(); + config_save(); } void @@ -2052,8 +2089,6 @@ MainWindow::on_actionHiDPI_scaling_triggered() void MainWindow::on_actionHide_status_bar_triggered() { - auto w = ui->stackedWidget->width(); - auto h = ui->stackedWidget->height(); hide_status_bar ^= 1; ui->actionHide_status_bar->setChecked(hide_status_bar); statusBar()->setVisible(!hide_status_bar); @@ -2065,7 +2100,7 @@ MainWindow::on_actionHide_status_bar_triggered() } else { int vid_resize_orig = vid_resize; vid_resize = 0; - emit resizeContents(w, h); + emit resizeContents(monitors[0].mon_scrnsz_x, monitors[0].mon_scrnsz_y); vid_resize = vid_resize_orig; if (vid_resize == 1) setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); @@ -2075,8 +2110,6 @@ MainWindow::on_actionHide_status_bar_triggered() void MainWindow::on_actionHide_tool_bar_triggered() { - auto w = ui->stackedWidget->width(); - auto h = ui->stackedWidget->height(); hide_tool_bar ^= 1; ui->actionHide_tool_bar->setChecked(hide_tool_bar); ui->toolBar->setVisible(!hide_tool_bar); @@ -2085,7 +2118,7 @@ MainWindow::on_actionHide_tool_bar_triggered() } else { int vid_resize_orig = vid_resize; vid_resize = 0; - emit resizeContents(w, h); + emit resizeContents(monitors[0].mon_scrnsz_x, monitors[0].mon_scrnsz_y); vid_resize = vid_resize_orig; if (vid_resize == 1) setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); @@ -2298,6 +2331,13 @@ MainWindow::on_actionOpen_screenshots_folder_triggered() QDesktopServices::openUrl(QUrl(QString("file:///") + usr_path + QString("/screenshots/"))); } +void +MainWindow::on_actionOpen_printer_tray_triggered() +{ + static_cast(QDir(QString(usr_path) + QString("/printer/")).mkpath(".")); + QDesktopServices::openUrl(QUrl(QString("file:///") + usr_path + QString("/printer/"))); +} + void MainWindow::on_actionApply_fullscreen_stretch_mode_when_maximized_triggered(bool checked) { @@ -2332,6 +2372,17 @@ void MainWindow::on_actionACPI_Shutdown_triggered() acpi_pwrbut_pressed = 1; } +void MainWindow::on_actionCGA_composite_settings_triggered() +{ + isNonPause = true; + CGASettingsDialog dialog; + dialog.setModal(true); + dialog.exec(); + isNonPause = false; + config_save(); +} + + void MainWindow::on_actionDebug_GPUDebug_VRAM_triggered() { debugVramDialog = new GPUDebugVRAMDialog(this); diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp index 8b35992c6..26b5efbb2 100644 --- a/src/qt/qt_mainwindow.hpp +++ b/src/qt/qt_mainwindow.hpp @@ -87,6 +87,7 @@ private slots: void on_actionSettings_triggered(); void on_actionExit_triggered(); void on_actionAuto_pause_triggered(); + void on_actionUpdate_mouse_every_CPU_frame_triggered(); void on_actionPause_triggered(); void on_actionCtrl_Alt_Del_triggered(); void on_actionCtrl_Alt_Esc_triggered(); @@ -171,8 +172,12 @@ private slots: void on_actionOpen_screenshots_folder_triggered(); + void on_actionOpen_printer_tray_triggered(); + void on_actionApply_fullscreen_stretch_mode_when_maximized_triggered(bool checked); + void on_actionCGA_composite_settings_triggered(); + private: Ui::MainWindow *ui; @@ -213,6 +218,7 @@ private: QIcon caps_icon_off, scroll_icon_off, num_icon_off, kana_icon_off; bool isShowMessage = false; + bool isNonPause = false; bool window_blocked = false; }; diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui index 3ff1797a5..752389779 100644 --- a/src/qt/qt_mainwindow.ui +++ b/src/qt/qt_mainwindow.ui @@ -54,7 +54,7 @@ 0 0 724 - 23 + 21 @@ -68,12 +68,14 @@ - + - + + + @@ -110,6 +112,7 @@ + @@ -159,7 +162,7 @@ - E&GA/(S)VGA settings + EGA/(S)&VGA settings @@ -202,6 +205,7 @@ + @@ -237,7 +241,7 @@ - Qt::PreventContextMenu + Qt::ContextMenuPolicy::PreventContextMenu toolBar @@ -249,7 +253,7 @@ false - Qt::TopToolBarArea + Qt::ToolBarArea::TopToolBarArea @@ -258,7 +262,7 @@ - Qt::ToolButtonIconOnly + Qt::ToolButtonStyle::ToolButtonIconOnly false @@ -279,6 +283,14 @@ + + + true + + + &Update mouse every CPU frame + + true @@ -365,7 +377,7 @@ E&xit - QAction::QuitRole + QAction::MenuRole::QuitRole @@ -377,7 +389,7 @@ &Settings... - QAction::NoRole + QAction::MenuRole::NoRole false @@ -436,7 +448,7 @@ true - F&orce 4:3 display ratio + Force &4:3 display ratio @@ -679,7 +691,7 @@ false - QAction::AboutQtRole + QAction::MenuRole::AboutQtRole @@ -687,7 +699,7 @@ &About 86Box... - QAction::AboutRole + QAction::MenuRole::AboutRole @@ -740,7 +752,7 @@ &Preferences... - QAction::PreferencesRole + QAction::MenuRole::PreferencesRole @@ -813,7 +825,7 @@ Renderer &options... - QAction::NoRole + QAction::MenuRole::NoRole @@ -851,6 +863,11 @@ 3 + + + Open p&rinter tray... + + Open screenshots &folder... @@ -878,8 +895,6 @@ &Pen - - GPU Debug - VRAM Viewer diff --git a/src/qt/qt_platform.cpp b/src/qt/qt_platform.cpp index 5d3b76dcb..653926071 100644 --- a/src/qt/qt_platform.cpp +++ b/src/qt/qt_platform.cpp @@ -361,7 +361,9 @@ path_append_filename(char *dest, const char *s1, const char *s2) if (!dest || !s1 || !s2) return; - snprintf(dest, dest_size, "%s", s1); + if (dest != s1) + snprintf(dest, dest_size, "%s", s1); + len = strlen(dest); if (len > 0 && dest[len - 1] != '/' && dest[len - 1] != '\\') { @@ -439,6 +441,8 @@ plat_pause(int p) } if ((!!p) == dopause) { + QTimer::singleShot(0, main_window, &MainWindow::updateUiPauseState); + #ifdef Q_OS_WINDOWS if (source_hwnd) PostMessage((HWND) (uintptr_t) source_hwnd, WM_SENDSTATUS, (WPARAM) !!p, (LPARAM) (HWND) main_window->winId()); @@ -664,32 +668,64 @@ plat_chdir(char *path) void plat_get_global_config_dir(char *outbuf, const size_t len) { - const auto dir = QDir(QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation)[0]); - if (!dir.exists()) { - if (!dir.mkpath(".")) { - qWarning("Failed to create global configuration directory %s", dir.absolutePath().toUtf8().constData()); + if (portable_mode) { + strncpy(outbuf, exe_path, len); + } else { + const auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)); + if (!dir.exists()) { + if (!dir.mkpath(".")) { + qWarning("Failed to create global configuration directory %s", dir.absolutePath().toUtf8().constData()); + } } + strncpy(outbuf, dir.canonicalPath().toUtf8().constData(), len); } - strncpy(outbuf, dir.canonicalPath().toUtf8().constData(), len); + + path_slash(outbuf); } void plat_get_global_data_dir(char *outbuf, const size_t len) { - const auto dir = QDir(QStandardPaths::standardLocations(QStandardPaths::AppDataLocation)[0]); - if (!dir.exists()) { - if (!dir.mkpath(".")) { - qWarning("Failed to create global data directory %s", dir.absolutePath().toUtf8().constData()); + if (portable_mode) { + strncpy(outbuf, exe_path, len); + } else { + const auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)); + if (!dir.exists()) { + if (!dir.mkpath(".")) { + qWarning("Failed to create global data directory %s", dir.absolutePath().toUtf8().constData()); + } } + strncpy(outbuf, dir.canonicalPath().toUtf8().constData(), len); } - strncpy(outbuf, dir.canonicalPath().toUtf8().constData(), len); + + path_slash(outbuf); } void plat_get_temp_dir(char *outbuf, const uint8_t len) { - const auto dir = QDir(QStandardPaths::standardLocations(QStandardPaths::TempLocation)[0]); + const auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); strncpy(outbuf, dir.canonicalPath().toUtf8().constData(), len); + path_slash(outbuf); +} + +void +plat_get_vmm_dir(char *outbuf, const size_t len) +{ + QString path; + + if (portable_mode) { + path = QDir(exe_path).filePath(VMM_PATH); + } else { +#ifdef Q_OS_WINDOWS + path = QDir::home().filePath(VMM_PATH_WINDOWS); +#else + path = QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)).filePath(VMM_PATH); +#endif + } + + strncpy(outbuf, path.toUtf8().constData(), len); + path_slash(outbuf); } void diff --git a/src/qt/qt_progsettings.cpp b/src/qt/qt_progsettings.cpp index 5dfae866e..c2fa75dff 100644 --- a/src/qt/qt_progsettings.cpp +++ b/src/qt/qt_progsettings.cpp @@ -47,7 +47,6 @@ QTranslator *ProgSettings::qtTranslator = nullptr; QVector> ProgSettings::languages = { { "system", "(System Default)" }, - { "ca-ES", "Catalan (Spain)" }, { "zh-CN", "Chinese (Simplified)" }, { "zh-TW", "Chinese (Traditional)" }, { "hr-HR", "Croatian (Croatia)" }, @@ -57,11 +56,11 @@ QVector> ProgSettings::languages = { { "en-US", "English (United States)" }, { "fi-FI", "Finnish (Finland)" }, { "fr-FR", "French (France)" }, - { "hu-HU", "Hungarian (Hungary)" }, { "it-IT", "Italian (Italy)" }, { "ja-JP", "Japanese (Japan)" }, { "ko-KR", "Korean (Korea)" }, { "nl-NL", "Dutch (Netherlands)" }, + { "nb-NO", "Norwegian (Bokmål)" }, { "pl-PL", "Polish (Poland)" }, { "pt-BR", "Portuguese (Brazil)" }, { "pt-PT", "Portuguese (Portugal)" }, @@ -197,31 +196,64 @@ ProgSettings::loadTranslators(QObject *parent) for (int i = 0; i < QLocale::system().uiLanguages().size(); i++) { localetofilename = QLocale::system().uiLanguages()[i]; if (translator->load(QLatin1String("86box_") + localetofilename, QLatin1String(":/"))) { - qDebug() << "Translations loaded.\n"; + qDebug() << "Translations loaded."; QCoreApplication::installTranslator(translator); - if (!qtTranslator->load(QLatin1String("qtbase_") + localetofilename.replace('-', '_'), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) - if (!qtTranslator->load(QLatin1String("qtbase_") + localetofilename.left(localetofilename.indexOf('-')), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) - if (!qtTranslator->load(QLatin1String("qt_") + localetofilename.replace('-', '_'), QApplication::applicationDirPath() + "/./translations/")) - qtTranslator->load(QLatin1String("qt_") + localetofilename.replace('-', '_'), QLatin1String(":/")); - if (QApplication::installTranslator(qtTranslator)) { - qDebug() << "Qt translations loaded." - << "\n"; - } + /* First try qtbase */ + if (!loadQtTranslations(QLatin1String("qtbase_") + localetofilename.replace('-', '_'))) + /* If that fails, try legacy qt_* translations */ + if (!loadQtTranslations(QLatin1String("qt_") + localetofilename.replace('-', '_'))) + qDebug() << "Failed to find Qt translations!"; + if (QCoreApplication::installTranslator(qtTranslator)) + qDebug() << "Qt translations loaded."; break; } } } else { - translator->load(QLatin1String("86box_") + languages[lang_id].first, QLatin1String(":/")); + if (translator->load(QLatin1String("86box_") + languages[lang_id].first, QLatin1String(":/"))) + qDebug() << "Translations loaded."; QCoreApplication::installTranslator(translator); - if (!qtTranslator->load(QLatin1String("qtbase_") + QString(languages[lang_id].first).replace('-', '_'), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) - if (!qtTranslator->load(QLatin1String("qtbase_") + QString(languages[lang_id].first).left(QString(languages[lang_id].first).indexOf('-')), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) - if(!qtTranslator->load(QLatin1String("qt_") + QString(languages[lang_id].first).replace('-', '_'), QApplication::applicationDirPath() + "/./translations/")) - qtTranslator->load(QLatin1String("qt_") + QString(languages[lang_id].first).replace('-', '_'), QLatin1String(":/")); + /* First try qtbase */ + if (!loadQtTranslations(QLatin1String("qtbase_") + QString(languages[lang_id].first).replace('-', '_'))) + /* If that fails, try legacy qt_* translations */ + if (!loadQtTranslations(QLatin1String("qt_") + QString(languages[lang_id].first).replace('-', '_'))) + qDebug() << "Failed to find Qt translations!"; - QCoreApplication::installTranslator(qtTranslator); + if (QCoreApplication::installTranslator(qtTranslator)) + qDebug() << "Qt translations loaded."; } } +bool +ProgSettings::loadQtTranslations(const QString name) +{ + QString name_lang_only = name.left(name.indexOf('_')); + /* System-wide translations */ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + if (qtTranslator->load(name, QLibraryInfo::path(QLibraryInfo::TranslationsPath))) +#else + if (qtTranslator->load(name, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) +#endif + return true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + else if (qtTranslator->load(name_lang_only, QLibraryInfo::path(QLibraryInfo::TranslationsPath))) +#else + else if (qtTranslator->load(name_lang_only, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) +#endif + return true; + /* Bundled translations (embedded) */ + else if (qtTranslator->load(name, QLatin1String(":/"))) + return true; + else if (qtTranslator->load(name_lang_only, QLatin1String(":/"))) + return true; + /* Bundled translations (external) */ + else if (qtTranslator->load(name, QApplication::applicationDirPath() + "/./translations/")) + return true; + else if (qtTranslator->load(name_lang_only, QApplication::applicationDirPath() + "/./translations/")) + return true; + else + return false; +} + void ProgSettings::on_pushButtonLanguage_released() { diff --git a/src/qt/qt_progsettings.hpp b/src/qt/qt_progsettings.hpp index 31600e7f1..9445d2f86 100644 --- a/src/qt/qt_progsettings.hpp +++ b/src/qt/qt_progsettings.hpp @@ -49,6 +49,7 @@ private slots: private: Ui::ProgSettings *ui; + static bool loadQtTranslations(const QString name); friend class MainWindow; double mouseSensitivity; diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp index c5cc286b5..ade27d831 100644 --- a/src/qt/qt_rendererstack.cpp +++ b/src/qt/qt_rendererstack.cpp @@ -105,7 +105,7 @@ RendererStack::RendererStack(QWidget *parent, int monitor_index) frameRateTimer->setSingleShot(false); frameRateTimer->setInterval(1000); connect(frameRateTimer, &QTimer::timeout, [this] { - this->setWindowTitle(QObject::tr("86Box Monitor #") + QString::number(m_monitor_index + 1) + QString(" - ") + tr("%1 Hz").arg(monitors[m_monitor_index].mon_actualrenderedframes.load())); + this->setWindowTitle(QObject::tr("86Box Monitor #") + QString::number(m_monitor_index + 1) + QString(" - ") + tr("%1 Hz").arg(QString::number(monitors[m_monitor_index].mon_actualrenderedframes.load()) + (monitors[m_monitor_index].mon_interlace ? "i" : ""))); }); frameRateTimer->start(1000); } @@ -183,7 +183,11 @@ RendererStack::mouseReleaseEvent(QMouseEvent *event) rw_hwnd = (HWND) this->winId(); #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + if (!dopause && this->geometry().contains(m_monitor_index >= 1 ? event->globalPosition().toPoint() : event->position().toPoint()) && +#else if (!dopause && this->geometry().contains(m_monitor_index >= 1 ? event->globalPos() : event->pos()) && +#endif (event->button() == Qt::LeftButton) && !mouse_capture && (isMouseDown & 1) && (kbd_req_capture || (mouse_get_buttons() != 0)) && (mouse_input_mode == 0)) { @@ -506,8 +510,13 @@ RendererStack::event(QEvent* event) if (m_monitor_index >= 1) { if (mouse_input_mode >= 1) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + mouse_x_abs = (mouse_event->position().x()) / (double)width(); + mouse_y_abs = (mouse_event->position().y()) / (double)height(); +#else mouse_x_abs = (mouse_event->localPos().x()) / (double)width(); mouse_y_abs = (mouse_event->localPos().y()) / (double)height(); +#endif if (!mouse_tablet_in_proximity) mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity; mouse_x_abs -= rendererWindow->destinationF.left(); @@ -527,8 +536,13 @@ RendererStack::event(QEvent* event) #ifdef Q_OS_WINDOWS if (mouse_input_mode == 0) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + mouse_x_abs = (mouse_event->position().x()) / (double)width(); + mouse_y_abs = (mouse_event->position().y()) / (double)height(); +#else mouse_x_abs = (mouse_event->localPos().x()) / (double)width(); mouse_y_abs = (mouse_event->localPos().y()) / (double)height(); +#endif mouse_x_abs -= rendererWindow->destinationF.left(); mouse_y_abs -= rendererWindow->destinationF.top(); @@ -544,8 +558,13 @@ RendererStack::event(QEvent* event) } #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + mouse_x_abs = (mouse_event->position().x()) / (double)width(); + mouse_y_abs = (mouse_event->position().y()) / (double)height(); +#else mouse_x_abs = (mouse_event->localPos().x()) / (double)width(); mouse_y_abs = (mouse_event->localPos().y()) / (double)height(); +#endif mouse_x_abs -= rendererWindow->destinationF.left(); mouse_y_abs -= rendererWindow->destinationF.top(); diff --git a/src/qt/qt_settings.cpp b/src/qt/qt_settings.cpp index 3d06f53e3..e15015403 100644 --- a/src/qt/qt_settings.cpp +++ b/src/qt/qt_settings.cpp @@ -50,7 +50,11 @@ public: SettingsModel(QObject *parent) : QAbstractListModel(parent) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + fontHeight = QFontMetrics(qApp->font()).height(); +#else fontHeight = QApplication::fontMetrics().height(); +#endif } QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; diff --git a/src/qt/qt_settingsinput.cpp b/src/qt/qt_settingsinput.cpp index d8cc7c029..50e3662e9 100644 --- a/src/qt/qt_settingsinput.cpp +++ b/src/qt/qt_settingsinput.cpp @@ -8,8 +8,6 @@ * * Mouse/Joystick configuration UI module. * - * - * * Authors: Joakim L. Gilje * * Copyright 2021 Joakim L. Gilje @@ -95,7 +93,7 @@ SettingsInput::save() keyboard_type = ui->comboBoxKeyboard->currentData().toInt(); mouse_type = ui->comboBoxMouse->currentData().toInt(); - joystick_type = ui->comboBoxJoystick->currentData().toInt(); + joystick_type[0] = ui->comboBoxJoystick0->currentData().toInt(); // Copy accelerators from working set to global set for(int x = 0; x < NUM_ACCELS; x++) { @@ -179,21 +177,22 @@ SettingsInput::onCurrentMachineChanged(int machineId) ui->comboBoxMouse->setCurrentIndex(-1); ui->comboBoxMouse->setCurrentIndex(selectedRow); + // Joysticks int i = 0; const char *joyName = joystick_get_name(i); - auto *joystickModel = ui->comboBoxJoystick->model(); + auto *joystickModel = ui->comboBoxJoystick0->model(); removeRows = joystickModel->rowCount(); selectedRow = 0; while (joyName) { int row = Models::AddEntry(joystickModel, tr(joyName).toUtf8().data(), i); - if (i == joystick_type) + if (i == joystick_type[0]) selectedRow = row - removeRows; ++i; joyName = joystick_get_name(i); } joystickModel->removeRows(0, removeRows); - ui->comboBoxJoystick->setCurrentIndex(selectedRow); + ui->comboBoxJoystick0->setCurrentIndex(selectedRow); } void @@ -309,11 +308,11 @@ SettingsInput::on_comboBoxMouse_currentIndexChanged(int index) } void -SettingsInput::on_comboBoxJoystick_currentIndexChanged(int index) +SettingsInput::on_comboBoxJoystick0_currentIndexChanged(int index) { - int joystickId = ui->comboBoxJoystick->currentData().toInt(); + int joystickId = ui->comboBoxJoystick0->currentData().toInt(); for (int i = 0; i < MAX_JOYSTICKS; ++i) { - auto *btn = findChild(QString("pushButtonJoystick%1").arg(i + 1)); + auto *btn = findChild(QString("pushButtonJoystick0%1").arg(i + 1)); if (btn == nullptr) continue; @@ -336,10 +335,10 @@ SettingsInput::on_pushButtonConfigureMouse_clicked() } static int -get_axis(JoystickConfiguration &jc, int axis, int joystick_nr) +get_axis(JoystickConfiguration &jc, int axis, uint8_t gameport_nr, int joystick_nr) { int axis_sel = jc.selectedAxis(axis); - int nr_axes = plat_joystick_state[joystick_state[0][joystick_nr].plat_joystick_nr - 1].nr_axes; + int nr_axes = plat_joystick_state[joystick_state[gameport_nr][joystick_nr].plat_joystick_nr - 1].nr_axes; if (axis_sel < nr_axes) return axis_sel; @@ -352,10 +351,10 @@ get_axis(JoystickConfiguration &jc, int axis, int joystick_nr) } static int -get_pov(JoystickConfiguration &jc, int pov, int joystick_nr) +get_pov(JoystickConfiguration &jc, int pov, uint8_t gameport_nr, int joystick_nr) { int pov_sel = jc.selectedPov(pov); - int nr_povs = plat_joystick_state[joystick_state[0][joystick_nr].plat_joystick_nr - 1].nr_povs * 2; + int nr_povs = plat_joystick_state[joystick_state[gameport_nr][joystick_nr].plat_joystick_nr - 1].nr_povs * 2; if (pov_sel < nr_povs) { if (pov_sel & 1) @@ -368,9 +367,9 @@ get_pov(JoystickConfiguration &jc, int pov, int joystick_nr) } static void -updateJoystickConfig(int type, int joystick_nr, QWidget *parent) +updateJoystickConfig(int type, uint8_t gameport_nr, int joystick_nr, QWidget *parent) { - JoystickConfiguration jc(type, joystick_nr, parent); + JoystickConfiguration jc(type, gameport_nr, joystick_nr, parent); switch (jc.exec()) { case QDialog::Rejected: return; @@ -378,43 +377,43 @@ updateJoystickConfig(int type, int joystick_nr, QWidget *parent) break; } - joystick_state[0][joystick_nr].plat_joystick_nr = jc.selectedDevice(); - if (joystick_state[0][joystick_nr].plat_joystick_nr) { + joystick_state[gameport_nr][joystick_nr].plat_joystick_nr = jc.selectedDevice(); + if (joystick_state[gameport_nr][joystick_nr].plat_joystick_nr) { for (int axis_nr = 0; axis_nr < joystick_get_axis_count(type); axis_nr++) { - joystick_state[0][joystick_nr].axis_mapping[axis_nr] = get_axis(jc, axis_nr, joystick_nr); + joystick_state[gameport_nr][joystick_nr].axis_mapping[axis_nr] = get_axis(jc, axis_nr, gameport_nr, joystick_nr); } for (int button_nr = 0; button_nr < joystick_get_button_count(type); button_nr++) { - joystick_state[0][joystick_nr].button_mapping[button_nr] = jc.selectedButton(button_nr); + joystick_state[gameport_nr][joystick_nr].button_mapping[button_nr] = jc.selectedButton(button_nr); } for (int pov_nr = 0; pov_nr < joystick_get_pov_count(type) * 2; pov_nr += 2) { - joystick_state[0][joystick_nr].pov_mapping[pov_nr][0] = get_pov(jc, pov_nr, joystick_nr); - joystick_state[0][joystick_nr].pov_mapping[pov_nr][1] = get_pov(jc, pov_nr + 1, joystick_nr); + joystick_state[gameport_nr][joystick_nr].pov_mapping[pov_nr][0] = get_pov(jc, pov_nr, gameport_nr, joystick_nr); + joystick_state[gameport_nr][joystick_nr].pov_mapping[pov_nr][1] = get_pov(jc, pov_nr + 1, gameport_nr, joystick_nr); } } } void -SettingsInput::on_pushButtonJoystick1_clicked() +SettingsInput::on_pushButtonJoystick01_clicked() { - updateJoystickConfig(ui->comboBoxJoystick->currentData().toInt(), 0, this); + updateJoystickConfig(ui->comboBoxJoystick0->currentData().toInt(), 0, 0, this); } void -SettingsInput::on_pushButtonJoystick2_clicked() +SettingsInput::on_pushButtonJoystick02_clicked() { - updateJoystickConfig(ui->comboBoxJoystick->currentData().toInt(), 1, this); + updateJoystickConfig(ui->comboBoxJoystick0->currentData().toInt(), 0, 1, this); } void -SettingsInput::on_pushButtonJoystick3_clicked() +SettingsInput::on_pushButtonJoystick03_clicked() { - updateJoystickConfig(ui->comboBoxJoystick->currentData().toInt(), 2, this); + updateJoystickConfig(ui->comboBoxJoystick0->currentData().toInt(), 0, 2, this); } void -SettingsInput::on_pushButtonJoystick4_clicked() +SettingsInput::on_pushButtonJoystick04_clicked() { - updateJoystickConfig(ui->comboBoxJoystick->currentData().toInt(), 3, this); + updateJoystickConfig(ui->comboBoxJoystick0->currentData().toInt(), 0, 3, this); } diff --git a/src/qt/qt_settingsinput.hpp b/src/qt/qt_settingsinput.hpp index 9a7702b4b..68748fa36 100644 --- a/src/qt/qt_settingsinput.hpp +++ b/src/qt/qt_settingsinput.hpp @@ -32,22 +32,22 @@ private slots: void on_comboBoxMouse_currentIndexChanged(int index); void on_pushButtonConfigureMouse_clicked(); - void on_comboBoxJoystick_currentIndexChanged(int index); - void on_pushButtonJoystick1_clicked(); - void on_pushButtonJoystick2_clicked(); - void on_pushButtonJoystick3_clicked(); - void on_pushButtonJoystick4_clicked(); + void on_comboBoxJoystick0_currentIndexChanged(int index); + void on_pushButtonJoystick01_clicked(); + void on_pushButtonJoystick02_clicked(); + void on_pushButtonJoystick03_clicked(); + void on_pushButtonJoystick04_clicked(); - void on_tableKeys_cellDoubleClicked(int row, int col); - void on_tableKeys_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); + void on_tableKeys_cellDoubleClicked(int row, int col); + void on_tableKeys_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); - void on_pushButtonClearBind_clicked(); - void on_pushButtonBind_clicked(); + void on_pushButtonClearBind_clicked(); + void on_pushButtonBind_clicked(); private: Ui::SettingsInput *ui; int machineId = 0; - void refreshInputList(); + void refreshInputList(); }; #endif // QT_SETTINGSINPUT_HPP diff --git a/src/qt/qt_settingsinput.ui b/src/qt/qt_settingsinput.ui index 8436c3a9d..02b3e388c 100644 --- a/src/qt/qt_settingsinput.ui +++ b/src/qt/qt_settingsinput.ui @@ -90,42 +90,42 @@ - + Joystick: - + 30 - + Joystick 1... - + Joystick 2... - + Joystick 3... - + Joystick 4... diff --git a/src/qt/qt_settingsnetwork.cpp b/src/qt/qt_settingsnetwork.cpp index 1028262bc..cf07234e5 100644 --- a/src/qt/qt_settingsnetwork.cpp +++ b/src/qt/qt_settingsnetwork.cpp @@ -360,12 +360,12 @@ SettingsNetwork::onCurrentMachineChanged(int machineId) } else if (net_cards_conf[i].net_type == NET_TYPE_NMSWITCH) { auto *promisc_value = findChild(QString("boxPromisc%1").arg(i + 1)); promisc_value->setCheckState(net_cards_conf[i].promisc_mode == 1 ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); - auto *switch_group_value = findChild(QString("switchSpinner%1").arg(i + 1)); + auto *switch_group_value = findChild(QString("spinnerSwitch%1").arg(i + 1)); switch_group_value->setValue(net_cards_conf[i].switch_group + 1); } else if (net_cards_conf[i].net_type == NET_TYPE_NRSWITCH) { - auto *hostname_value = findChild(QString("switchHostname%1").arg(i + 1)); + auto *hostname_value = findChild(QString("hostnameSwitch%1").arg(i + 1)); hostname_value->setText(net_cards_conf[i].nrs_hostname); - auto *switch_group_value = findChild(QString("switchSpinner%1").arg(i + 1)); + auto *switch_group_value = findChild(QString("spinnerSwitch%1").arg(i + 1)); switch_group_value->setValue(net_cards_conf[i].switch_group + 1); #endif /* USE_NETSWITCH */ } diff --git a/src/qt/qt_settingsports.cpp b/src/qt/qt_settingsports.cpp index 5abe0a805..001193357 100644 --- a/src/qt/qt_settingsports.cpp +++ b/src/qt/qt_settingsports.cpp @@ -49,6 +49,8 @@ SettingsPorts::~SettingsPorts() void SettingsPorts::save() { + jumpered_internal_ecp_dma = ui->comboBoxLptECPDMA->currentData().toInt(); + for (int i = 0; i < PARALLEL_MAX; i++) { auto *cbox = findChild(QString("comboBoxLpt%1").arg(i + 1)); auto *checkBox = findChild(QString("checkBoxParallel%1").arg(i + 1)); @@ -73,7 +75,53 @@ SettingsPorts::onCurrentMachineChanged(int machineId) { this->machineId = machineId; - int c = 0; + int c = 0; + + auto *lptEcpDmaModel = ui->comboBoxLptECPDMA->model(); + auto removeRowsEcpDma = lptEcpDmaModel->rowCount(); + + int has_jumpers = !!machine_has_jumpered_ecp_dma(machineId, DMA_ANY); + + int selectedRow = -2; + int first = -2; + + for (int i = 0; i < 9; ++i) { + int j = machine_map_jumpered_ecp_dma(i); + + if ((has_jumpers && ((j == DMA_NONE) || !machine_has_jumpered_ecp_dma(machineId, j))) || + (!has_jumpers && (j != DMA_NONE))) + continue; + + if (first == -2) + first = j; + + QString name = tr(machine_get_jumpered_ecp_dma_name(i)); + int row = lptEcpDmaModel->rowCount(); + lptEcpDmaModel->insertRow(row); + auto idx = lptEcpDmaModel->index(row, 0); + + lptEcpDmaModel->setData(idx, name, Qt::DisplayRole); + lptEcpDmaModel->setData(idx, j, Qt::UserRole); + + if (j == jumpered_internal_ecp_dma) + selectedRow = row - removeRowsEcpDma; + + c++; + } + + if (selectedRow == -2) + selectedRow = first; + + lptEcpDmaModel->removeRows(0, removeRowsEcpDma); + ui->comboBoxLptECPDMA->setCurrentIndex(-1); + ui->comboBoxLptECPDMA->setCurrentIndex(selectedRow); + + if ((c == 1) || !has_jumpers) + ui->comboBoxLptECPDMA->setEnabled(false); + else + ui->comboBoxLptECPDMA->setEnabled(true); + + c = 0; // LPT Device QComboBox * cbox[PARALLEL_MAX] = { 0 }; diff --git a/src/qt/qt_settingsports.ui b/src/qt/qt_settingsports.ui index 0ac4cb92c..9a8533995 100644 --- a/src/qt/qt_settingsports.ui +++ b/src/qt/qt_settingsports.ui @@ -27,15 +27,35 @@ 0 - + + + + Internal LPT ECP DMA: + + + + + + + + 0 + 0 + + + + 30 + + + + LPT1 Device: - + @@ -48,21 +68,21 @@ - + Configure - + LPT2 Device: - + @@ -75,21 +95,21 @@ - + Configure - + LPT3 Device: - + @@ -102,21 +122,21 @@ - + Configure - + LPT4 Device: - + @@ -129,7 +149,7 @@ - + Configure diff --git a/src/qt/qt_styleoverride.cpp b/src/qt/qt_styleoverride.cpp index adfae0734..681114c4b 100644 --- a/src/qt/qt_styleoverride.cpp +++ b/src/qt/qt_styleoverride.cpp @@ -15,12 +15,14 @@ * Copyright 2022 Teemu Korhonen */ #include "qt_styleoverride.hpp" +#include "qt_util.hpp" #include #include #include #include #include +#include extern "C" { #include <86box/86box.h> @@ -42,7 +44,7 @@ StyleOverride::styleHint( QStyleHintReturn *returnData) const { /* Disable using menu with alt key */ - if (!vmm_enabled && (!kbd_req_capture || mouse_capture) && (hint == QStyle::SH_MenuBar_AltKeyNavigation)) + if (!start_vmm && (!kbd_req_capture || mouse_capture) && (hint == QStyle::SH_MenuBar_AltKeyNavigation)) return 0; return QProxyStyle::styleHint(hint, option, widget, returnData); @@ -60,12 +62,18 @@ StyleOverride::polish(QWidget *widget) widget->setFixedSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); widget->layout()->setSizeConstraint(QLayout::SetFixedSize); } - widget->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, true); + if (!qobject_cast(widget)) { + widget->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, true); + } + + if (qobject_cast(widget)) { + widget->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, vid_resize != 1); + widget->setWindowFlag(Qt::WindowMaximizeButtonHint, vid_resize == 1); + } } widget->setWindowFlag(Qt::WindowContextHelpButtonHint, false); #ifdef Q_OS_WINDOWS - extern bool windows_is_light_theme(); - BOOL DarkMode = !windows_is_light_theme(); + BOOL DarkMode = !util::isWindowsLightTheme(); DwmSetWindowAttribute((HWND)widget->winId(), DWMWA_USE_IMMERSIVE_DARK_MODE, (LPCVOID)&DarkMode, sizeof(DarkMode)); #endif } diff --git a/src/qt/qt_styleoverride.hpp b/src/qt/qt_styleoverride.hpp index 840aa6ad6..994271f15 100644 --- a/src/qt/qt_styleoverride.hpp +++ b/src/qt/qt_styleoverride.hpp @@ -10,6 +10,8 @@ class StyleOverride : public QProxyStyle { public: + using QProxyStyle::QProxyStyle; + int styleHint( StyleHint hint, const QStyleOption *option = nullptr, diff --git a/src/qt/qt_translations.qrc.in b/src/qt/qt_translations.qrc.in index c050747c0..ef7993372 100644 --- a/src/qt/qt_translations.qrc.in +++ b/src/qt/qt_translations.qrc.in @@ -1,6 +1,5 @@ - 86box_ca-ES.qm 86box_cs-CZ.qm 86box_de-DE.qm 86box_en-US.qm @@ -9,10 +8,10 @@ 86box_fi-FI.qm 86box_fr-FR.qm 86box_hr-HR.qm - 86box_hu-HU.qm 86box_it-IT.qm 86box_ja-JP.qm 86box_ko-KR.qm + 86box_nb-NO.qm 86box_nl-NL.qm 86box_pl-PL.qm 86box_pt-BR.qm diff --git a/src/qt/qt_updatecheckdialog.cpp b/src/qt/qt_updatecheckdialog.cpp index 71db9f31b..017d93822 100644 --- a/src/qt/qt_updatecheckdialog.cpp +++ b/src/qt/qt_updatecheckdialog.cpp @@ -31,7 +31,6 @@ UpdateCheckDialog(const UpdateCheck::UpdateChannel channel, QWidget *parent) : Q { ui->setupUi(this); ui->statusLabel->setHidden(true); - this->setFixedSize(400, 130); updateChannel = channel; currentVersion = UpdateCheck::getCurrentVersion(updateChannel); connect(updateCheck, &UpdateCheck::updateCheckError, [=](const QString &errorMsg) { @@ -84,7 +83,12 @@ UpdateCheckDialog::upToDate() ui->progressBar->setMaximum(100); ui->progressBar->setValue(100); ui->statusLabel->setVisible(true); - const auto statusText = tr("You are running the latest %1 version of 86Box: %2").arg(updateChannel == UpdateCheck::UpdateChannel::Stable ? "stable" : "beta", currentVersion); + QString currentVersionString; + if (updateChannel == UpdateCheck::UpdateChannel::Stable) + currentVersionString = QString("v%1").arg(currentVersion); + else + currentVersionString = QString("%1 %2").arg(tr("build"), currentVersion); + const auto statusText = tr("You are running the latest %1 version of 86Box: %2").arg(updateChannel == UpdateCheck::UpdateChannel::Stable ? tr("stable") : tr("beta"), currentVersionString); ui->statusLabel->setText(statusText); ui->buttonBox->setStandardButtons(QDialogButtonBox::Ok); } diff --git a/src/qt/qt_updatecheckdialog.ui b/src/qt/qt_updatecheckdialog.ui index c70ca8de2..3fd2942fd 100644 --- a/src/qt/qt_updatecheckdialog.ui +++ b/src/qt/qt_updatecheckdialog.ui @@ -10,6 +10,18 @@ 130 + + + 400 + 130 + + + + + 400 + 130 + + 0 @@ -29,7 +41,7 @@ - Checking for updates.. + Checking for updates... Qt::AlignCenter diff --git a/src/qt/qt_updatedetails.cpp b/src/qt/qt_updatedetails.cpp index 393d82617..aea55a30a 100644 --- a/src/qt/qt_updatedetails.cpp +++ b/src/qt/qt_updatedetails.cpp @@ -28,12 +28,18 @@ UpdateDetails(const UpdateCheck::UpdateResult &updateResult, QWidget *parent) : ui->setupUi(this); ui->updateTitle->setText(tr("An update to 86Box is available!")); QString currentVersionText; - QString releaseType = updateResult.channel == UpdateCheck::UpdateChannel::Stable ? tr("version") : tr("build"); - if(!updateResult.currentVersion.isEmpty()) { - currentVersionText = tr("You are currently running %1 %2. ").arg(releaseType, updateResult.currentVersion); + QString latestVersionText; + if (updateResult.channel == UpdateCheck::UpdateChannel::Stable) { + currentVersionText = tr("You are currently running version %1.").arg(updateResult.currentVersion); + latestVersionText = tr("Version %1 is now available.").arg(updateResult.latestVersion); + } else { + currentVersionText = tr("You are currently running build %1.").arg(updateResult.currentVersion); + latestVersionText = tr("Build %1 is now available.").arg(updateResult.latestVersion); } + if (updateResult.currentVersion.isEmpty()) + currentVersionText = ""; - const auto updateDetailsText = tr("%1 %2 is now available. %3Would you like to visit the download page?").arg(releaseType[0].toUpper() + releaseType.mid(1), updateResult.latestVersion, currentVersionText); + const auto updateDetailsText = QString("%1 %2%3").arg(latestVersionText, currentVersionText.append(' '), tr("Would you like to visit the download page?")); ui->updateDetails->setText(updateDetailsText); if(updateResult.channel == UpdateCheck::UpdateChannel::Stable) { @@ -104,7 +110,27 @@ UpdateDetails::visitDownloadPage(const UpdateCheck::UpdateChannel &channel) QDesktopServices::openUrl(QUrl("https://github.com/86Box/86Box/releases/latest")); break; case UpdateCheck::UpdateChannel::CI: - QDesktopServices::openUrl(QUrl("https://ci.86box.net/job/86Box/lastSuccessfulBuild/artifact/")); + QDesktopServices::openUrl(QUrl("https://86box.net/builds#" +#ifdef Q_OS_WINDOWS + "win" +#elif defined(Q_OS_MACOS) + "mac" +#elif defined(Q_OS_LINUX) + "lin" +#endif + +#if defined(__aarch64__) || defined(_M_ARM64) + "arm64" +#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) + "64" +#endif + +#ifdef USE_NEW_DYNAREC + "ndr" +#else + "odr" +#endif + )); break; } } diff --git a/src/qt/qt_util.cpp b/src/qt/qt_util.cpp index bc9b9f1f8..201b61b3f 100644 --- a/src/qt/qt_util.cpp +++ b/src/qt/qt_util.cpp @@ -27,6 +27,7 @@ #include "qt_util.hpp" #ifdef Q_OS_WINDOWS +# include # include # ifndef DWMWA_WINDOW_CORNER_PREFERENCE # define DWMWA_WINDOW_CORNER_PREFERENCE 33 @@ -62,6 +63,36 @@ screenOfWidget(QWidget *widget) } #ifdef Q_OS_WINDOWS + +bool +isWindowsLightTheme(void) { + // based on https://stackoverflow.com/questions/51334674/how-to-detect-windows-10-light-dark-mode-in-win32-application + + // The value is expected to be a REG_DWORD, which is a signed 32-bit little-endian + auto buffer = std::vector(4); + auto cbData = static_cast(buffer.size() * sizeof(char)); + auto res = RegGetValueW( + HKEY_CURRENT_USER, + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", + L"AppsUseLightTheme", + RRF_RT_REG_DWORD, // expected value type + nullptr, + buffer.data(), + &cbData); + + if (res != ERROR_SUCCESS) { + return 1; + } + + // convert bytes written to our buffer to an int, assuming little-endian + auto i = int(buffer[3] << 24 | + buffer[2] << 16 | + buffer[1] << 8 | + buffer[0]); + + return i == 1; +} + void setWin11RoundedCorners(WId hwnd, bool enable) { diff --git a/src/qt/qt_util.hpp b/src/qt/qt_util.hpp index de3457a88..a2ca44425 100644 --- a/src/qt/qt_util.hpp +++ b/src/qt/qt_util.hpp @@ -15,6 +15,7 @@ QString DlgFilter(QStringList extensions, bool last = false); /* Returns screen the widget is on */ QScreen *screenOfWidget(QWidget *widget); #ifdef Q_OS_WINDOWS +bool isWindowsLightTheme(void); void setWin11RoundedCorners(WId hwnd, bool enable); #endif QString currentUuid(); diff --git a/src/qt/qt_vmmanager_addmachine.cpp b/src/qt/qt_vmmanager_addmachine.cpp index 997a5cdc2..b621d4733 100644 --- a/src/qt/qt_vmmanager_addmachine.cpp +++ b/src/qt/qt_vmmanager_addmachine.cpp @@ -47,62 +47,31 @@ VMManagerAddMachine(QWidget *parent) : QWizard(parent) #ifndef Q_OS_MACOS setWizardStyle(ModernStyle); - // setPixmap(LogoPixmap, scaledPixmap); - // setPixmap(LogoPixmap, wizardPixmap); - // setPixmap(WatermarkPixmap, scaledPixmap); - setPixmap(WatermarkPixmap, wizardPixmap); + setPixmap(LogoPixmap, QPixmap(":assets/addvm-logo.png")); #else - // macos - // setPixmap(BackgroundPixmap, scaledPixmap); - setPixmap(BackgroundPixmap, wizardPixmap); + setWizardStyle(MacStyle); + setPixmap(BackgroundPixmap, QPixmap(":/assets/86box-wizard.png")); #endif // Wizard wants to resize based on image. This keeps the size +#ifdef Q_OS_WINDOWS + setMinimumSize(QSize(550, size().height())); + setMaximumSize(QSize(550, size().height())); + setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, true); +#else setMinimumSize(size()); - setOption(HaveHelpButton, false); - // setPixmap(LogoPixmap, QPixmap(":/settings/qt/icons/86Box-gray.ico")); - -#if 0 - connect(this, &QWizard::helpRequested, this, &VMManagerAddMachine::showHelp); #endif + setOption(HaveHelpButton, false); setWindowTitle(tr("Add new system wizard")); } -#if 0 -void -VMManagerAddMachine::showHelp() -{ - // TBD - static QString lastHelpMessage; - - QString message; - - // Help will depend on the current page - switch (currentId()) { - case Page_Intro: - message = tr("This is the into page."); - break; - default: - message = tr("No help has been added yet, you're on your own."); - break; - } - - if (lastHelpMessage == message) { - message = tr("Did you click help twice?"); - } - - QMessageBox::information(this, tr("Add new system wizard help"), message); - lastHelpMessage = message; -} -#endif - IntroPage:: IntroPage(QWidget *parent) { setTitle(tr("Introduction")); - setPixmap(QWizard::WatermarkPixmap, QPixmap(":/assets/qt/assets/86box.png")); + setPixmap(QWizard::WatermarkPixmap, QPixmap(":assets/addvm-watermark.png")); topLabel = new QLabel(tr("This will help you add a new system to 86Box.")); // topLabel = new QLabel(tr("This will help you add a new system to 86Box.\n\n Choose \"New configuration\" if you'd like to create a new machine.\n\nChoose \"Use existing configuration\" if you'd like to paste in an existing configuration from elsewhere.")); @@ -138,9 +107,7 @@ WithExistingConfigPage:: WithExistingConfigPage(QWidget *parent) { setTitle(tr("Use existing configuration")); - - const auto topLabel = new QLabel(tr("Paste the contents of the existing configuration file into the box below.")); - topLabel->setWordWrap(true); + setSubTitle(tr("Paste the contents of the existing configuration file into the box below.")); existingConfiguration = new QPlainTextEdit(); const auto monospaceFont = new QFont(); @@ -158,7 +125,6 @@ WithExistingConfigPage(QWidget *parent) registerField("existingConfiguration*", this, "configuration"); const auto layout = new QVBoxLayout(); - layout->addWidget(topLabel); layout->addWidget(existingConfiguration); const auto loadFileButton = new QPushButton(); const auto loadFileLabel = new QLabel(tr("Load configuration from file")); @@ -175,7 +141,6 @@ WithExistingConfigPage(QWidget *parent) void WithExistingConfigPage::chooseExistingConfigFile() { - // TODO: FIXME: This is using the CLI arg and needs to instead use a proper variable const auto startDirectory = QString(vmm_path); const auto selectedConfigFile = QFileDialog::getOpenFileName(this, tr("Choose configuration file"), startDirectory, @@ -234,17 +199,16 @@ NameAndLocationPage(QWidget *parent) dirValidate = QRegularExpression(R"(^[^/]+$)"); #endif - const auto topLabel = new QLabel(tr("Enter the name of the system and choose the location")); + setSubTitle(tr("Enter the name of the system and choose the location")); #else setTitle(tr("System name")); - const auto topLabel = new QLabel(tr("Enter the name of the system")); + setSubTitle(tr("Enter the name of the system")); #endif - topLabel->setWordWrap(true); const auto chooseDirectoryButton = new QPushButton(); chooseDirectoryButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DirIcon)); - const auto systemNameLabel = new QLabel(tr("System Name")); + const auto systemNameLabel = new QLabel(tr("System name:")); systemName = new QLineEdit(); // Special event filter to override enter key systemName->installEventFilter(this); @@ -252,23 +216,21 @@ NameAndLocationPage(QWidget *parent) systemNameValidation = new QLabel(); #ifdef CUSTOM_SYSTEM_LOCATION - const auto systemLocationLabel = new QLabel(tr("System Location")); + const auto systemLocationLabel = new QLabel(tr("System location:")); systemLocation = new QLineEdit(); - // TODO: FIXME: This is using the CLI arg and needs to instead use a proper variable systemLocation->setText(QDir::toNativeSeparators(vmm_path)); registerField("systemLocation*", systemLocation); systemLocationValidation = new QLabel(); systemLocationValidation->setWordWrap(true); #endif - const auto displayNameLabel = new QLabel(tr("Display Name (optional)")); + const auto displayNameLabel = new QLabel(tr("Display name (optional):")); displayName = new QLineEdit(); // Special event filter to override enter key displayName->installEventFilter(this); registerField("displayName*", displayName); const auto layout = new QGridLayout(); - layout->addWidget(topLabel, 0, 0, 1, -1); // Spacer row layout->setRowMinimumHeight(1, 20); layout->addWidget(systemNameLabel, 2, 0); @@ -311,7 +273,6 @@ NameAndLocationPage::nextId() const void NameAndLocationPage::chooseDirectoryLocation() { - // TODO: FIXME: This is pulling in the CLI directory! Needs to be set properly elsewhere const auto directory = QFileDialog::getExistingDirectory(this, "Choose directory", QDir(vmm_path).path()); systemLocation->setText(QDir::toNativeSeparators(directory)); emit completeChanged(); @@ -381,21 +342,26 @@ ConclusionPage(QWidget *parent) { setTitle(tr("Complete")); + setPixmap(QWizard::WatermarkPixmap, QPixmap(":assets/addvm-watermark.png")); + topLabel = new QLabel(tr("The wizard will now launch the configuration for the new system.")); topLabel->setWordWrap(true); const auto systemNameLabel = new QLabel(tr("System name:")); systemNameLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); systemName = new QLabel(); + systemName->setWordWrap(true); #ifdef CUSTOM_SYSTEM_LOCATION const auto systemLocationLabel = new QLabel(tr("System location:")); systemLocationLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); systemLocation = new QLabel(); + systemLocation->setWordWrap(true); #endif displayNameLabel = new QLabel(tr("Display name:")); displayNameLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); displayName = new QLabel(); + displayName->setWordWrap(true); const auto layout = new QGridLayout(); layout->addWidget(topLabel, 0, 0, 1, -1); @@ -427,9 +393,11 @@ ConclusionPage::initializePage() #ifdef CUSTOM_SYSTEM_LOCATION systemLocation->setText(nativePath); #endif - if (!displayNameDisplay.isEmpty()) + if (!displayNameDisplay.isEmpty()) { + displayNameLabel->setVisible(true); + displayName->setVisible(true); displayName->setText(displayNameDisplay); - else { + } else { displayNameLabel->setVisible(false); displayName->setVisible(false); } diff --git a/src/qt/qt_vmmanager_addmachine.hpp b/src/qt/qt_vmmanager_addmachine.hpp index 92a12398a..b73b5a609 100644 --- a/src/qt/qt_vmmanager_addmachine.hpp +++ b/src/qt/qt_vmmanager_addmachine.hpp @@ -41,11 +41,6 @@ public: }; explicit VMManagerAddMachine(QWidget *parent = nullptr); - -#if 0 -private slots: - void showHelp(); -#endif }; class IntroPage : public QWizardPage { diff --git a/src/qt/qt_vmmanager_details.cpp b/src/qt/qt_vmmanager_details.cpp index 9292c7039..65608cf0a 100644 --- a/src/qt/qt_vmmanager_details.cpp +++ b/src/qt/qt_vmmanager_details.cpp @@ -19,12 +19,19 @@ #include #include +#include "qt_util.hpp" #include "qt_vmmanager_details.hpp" #include "ui_qt_vmmanager_details.h" +#define TOOLBUTTON_STYLESHEET_LIGHT "QToolButton {background: transparent; border: none; padding: 5px} QToolButton:hover {background: palette(midlight)} QToolButton:pressed {background: palette(mid)}" #ifdef Q_OS_WINDOWS -extern bool windows_is_light_theme(); +# define TOOLBUTTON_STYLESHEET_DARK "QToolButton {padding: 5px}" +# define SCREENSHOTBORDER_STYLESHEET_DARK "QLabel { border: 1px solid gray }" +#else +# define TOOLBUTTON_STYLESHEET_DARK "QToolButton {background: transparent; border: none; padding: 5px} QToolButton:hover {background: palette(dark)} QToolButton:pressed {background: palette(mid)}" #endif +#define SCROLLAREA_STYLESHEET_LIGHT "QWidget {background-color: palette(light)} QScrollBar{ background-color: none }" +#define SYSTEMLABEL_STYLESHEET_LIGHT "background-color: palette(midlight);" using namespace VMManager; @@ -100,24 +107,23 @@ VMManagerDetails::VMManagerDetails(QWidget *parent) : QString toolButtonStyleSheet; // Simple method to try and determine if light mode is enabled #ifdef Q_OS_WINDOWS - const bool lightMode = windows_is_light_theme(); + const bool lightMode = util::isWindowsLightTheme(); #else const bool lightMode = QApplication::palette().window().color().value() > QApplication::palette().windowText().color().value(); #endif if (lightMode) { - toolButtonStyleSheet = "QToolButton {background: transparent; border: none; padding: 5px} QToolButton:hover {background: palette(midlight)} QToolButton:pressed {background: palette(mid)}"; + toolButtonStyleSheet = TOOLBUTTON_STYLESHEET_LIGHT; } else { -#ifndef Q_OS_WINDOWS - toolButtonStyleSheet = "QToolButton {background: transparent; border: none; padding: 5px} QToolButton:hover {background: palette(dark)} QToolButton:pressed {background: palette(mid)}"; -#else - toolButtonStyleSheet = "QToolButton {padding: 5px}"; -#endif + toolButtonStyleSheet = TOOLBUTTON_STYLESHEET_DARK; } ui->ssNavTBHolder->setStyleSheet(toolButtonStyleSheet); + pauseIcon = QIcon(":/menuicons/qt/icons/pause.ico"); + runIcon = QIcon(":/menuicons/qt/icons/run.ico"); + // Experimenting startPauseButton = new QToolButton(); - startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico")); + startPauseButton->setIcon(runIcon); startPauseButton->setAutoRaise(true); startPauseButton->setEnabled(false); startPauseButton->setToolTip(tr("Start")); @@ -147,6 +153,17 @@ VMManagerDetails::VMManagerDetails(QWidget *parent) : ui->notesTextEdit->setEnabled(false); +#ifdef Q_OS_WINDOWS + connect(this, &VMManagerDetails::styleUpdated, systemSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, videoSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, storageSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, audioSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, networkSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, inputSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, portsSection, &VMManagerDetailSection::updateStyle); + connect(this, &VMManagerDetails::styleUpdated, otherSection, &VMManagerDetailSection::updateStyle); +#endif + sysconfig = new VMManagerSystem(); } @@ -160,12 +177,11 @@ VMManagerDetails::updateData(VMManagerSystem *passed_sysconfig) { // Set the scrollarea background but also set the scroll bar to none. Otherwise it will also // set the scrollbar background to the same. #ifdef Q_OS_WINDOWS - extern bool windows_is_light_theme(); - if (windows_is_light_theme()) + if (util::isWindowsLightTheme()) #endif { - ui->scrollArea->setStyleSheet("QWidget {background-color: palette(light)} QScrollBar{ background-color: none }"); - ui->systemLabel->setStyleSheet("background-color: palette(midlight);"); + ui->scrollArea->setStyleSheet(SCROLLAREA_STYLESHEET_LIGHT); + ui->systemLabel->setStyleSheet(SYSTEMLABEL_STYLESHEET_LIGHT); } // Margins are a little different on macos #ifdef Q_OS_MACOS @@ -192,10 +208,10 @@ VMManagerDetails::updateData(VMManagerSystem *passed_sysconfig) { bool running = sysconfig->getProcessStatus() == VMManagerSystem::ProcessStatus::Running || sysconfig->getProcessStatus() == VMManagerSystem::ProcessStatus::RunningWaiting; if(running) { - startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/pause.ico")); + startPauseButton->setIcon(pauseIcon); connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::pauseButtonPressed); } else { - startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico")); + startPauseButton->setIcon(runIcon); connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed); } startPauseButton->setEnabled(true); @@ -264,20 +280,29 @@ VMManagerDetails::updateConfig(VMManagerSystem *passed_sysconfig) { // Input inputSection->clear(); - inputSection->addSection(tr("Keyboard"), passed_sysconfig->getDisplayValue(Display::Name::Keyboard)); - inputSection->addSection(tr("Mouse"), passed_sysconfig->getDisplayValue(Display::Name::Mouse)); - inputSection->addSection(tr("Joystick"), passed_sysconfig->getDisplayValue(Display::Name::Joystick)); + inputSection->addSection("Keyboard", passed_sysconfig->getDisplayValue(Display::Name::Keyboard)); + inputSection->addSection("Mouse", passed_sysconfig->getDisplayValue(Display::Name::Mouse)); + inputSection->addSection("Joystick", passed_sysconfig->getDisplayValue(Display::Name::Joystick)); // Ports portsSection->clear(); - portsSection->addSection(tr("Serial ports"), passed_sysconfig->getDisplayValue(Display::Name::Serial)); - portsSection->addSection(tr("Parallel ports"), passed_sysconfig->getDisplayValue(Display::Name::Parallel)); + portsSection->addSection("Serial ports", passed_sysconfig->getDisplayValue(Display::Name::Serial)); + portsSection->addSection("Parallel ports", passed_sysconfig->getDisplayValue(Display::Name::Parallel)); // Other devices otherSection->clear(); - otherSection->addSection(tr("ISA RTC"), passed_sysconfig->getDisplayValue(Display::Name::IsaRtc)); - otherSection->addSection(tr("ISA RAM"), passed_sysconfig->getDisplayValue(Display::Name::IsaMem)); - otherSection->addSection(tr("ISA ROM"), passed_sysconfig->getDisplayValue(Display::Name::IsaRom)); + otherSection->addSection("ISA RTC", passed_sysconfig->getDisplayValue(Display::Name::IsaRtc)); + otherSection->addSection("ISA RAM", passed_sysconfig->getDisplayValue(Display::Name::IsaMem)); + otherSection->addSection("ISA ROM", passed_sysconfig->getDisplayValue(Display::Name::IsaRom)); + + systemSection->setSections(); + videoSection->setSections(); + storageSection->setSections(); + audioSection->setSections(); + networkSection->setSections(); + inputSection->setSections(); + portsSection->setSections(); + otherSection->setSections(); } void @@ -319,8 +344,8 @@ VMManagerDetails::updateScreenshots(VMManagerSystem *passed_sysconfig) { ui->screenshot->setEnabled(false); ui->screenshot->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); #ifdef Q_OS_WINDOWS - if (!windows_is_light_theme()) { - ui->screenshot->setStyleSheet("QLabel { border: 1px solid gray }"); + if (!util::isWindowsLightTheme()) { + ui->screenshot->setStyleSheet(SCREENSHOTBORDER_STYLESHEET_DARK); } else { ui->screenshot->setStyleSheet(""); } @@ -334,17 +359,17 @@ VMManagerDetails::updateProcessStatus() { QString status_text = running ? QString("%1: PID %2").arg(tr("Running"), QString::number(sysconfig->process->processId())) : tr("Not running"); - status_text.append(sysconfig->window_obscured ? QString(" (%1)").arg(tr("waiting")) : ""); + status_text.append(sysconfig->window_obscured ? QString(" (%1)").arg(tr("Waiting")) : ""); ui->statusLabel->setText(status_text); resetButton->setEnabled(running); stopButton->setEnabled(running); cadButton->setEnabled(running); if(running) { if(sysconfig->getProcessStatus() == VMManagerSystem::ProcessStatus::Running) { - startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/pause.ico")); + startPauseButton->setIcon(pauseIcon); startPauseButton->setToolTip(tr("Pause")); } else { - startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico")); + startPauseButton->setIcon(runIcon); startPauseButton->setToolTip(tr("Continue")); } @@ -352,7 +377,7 @@ VMManagerDetails::updateProcessStatus() { disconnect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed); connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::pauseButtonPressed); } else { - startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico")); + startPauseButton->setIcon(runIcon); disconnect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::pauseButtonPressed); disconnect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed); connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed); @@ -378,6 +403,32 @@ VMManagerDetails::updateWindowStatus() updateProcessStatus(); } +#ifdef Q_OS_WINDOWS +void +VMManagerDetails::updateStyle() +{ + QString toolButtonStyleSheet; + const bool lightMode = util::isWindowsLightTheme(); + if (lightMode) { + toolButtonStyleSheet = TOOLBUTTON_STYLESHEET_LIGHT; + ui->scrollArea->setStyleSheet(SCROLLAREA_STYLESHEET_LIGHT); + ui->systemLabel->setStyleSheet(SYSTEMLABEL_STYLESHEET_LIGHT); + if (!ui->screenshot->isEnabled()) + ui->screenshot->setStyleSheet(""); + } else { + toolButtonStyleSheet = TOOLBUTTON_STYLESHEET_DARK; + ui->scrollArea->setStyleSheet(""); + ui->systemLabel->setStyleSheet(""); + if (!ui->screenshot->isEnabled()) + ui->screenshot->setStyleSheet(SCREENSHOTBORDER_STYLESHEET_DARK); + } + ui->ssNavTBHolder->setStyleSheet(toolButtonStyleSheet); + ui->toolButtonHolder->setStyleSheet(toolButtonStyleSheet); + + emit styleUpdated(); +} +#endif + QWidget * VMManagerDetails::createHorizontalLine(const int leftSpacing, const int rightSpacing) { diff --git a/src/qt/qt_vmmanager_details.hpp b/src/qt/qt_vmmanager_details.hpp index 2fb1a9d57..ac7cda35b 100644 --- a/src/qt/qt_vmmanager_details.hpp +++ b/src/qt/qt_vmmanager_details.hpp @@ -42,8 +42,18 @@ public: void updateProcessStatus(); void updateWindowStatus(); + +#ifdef Q_OS_WINDOWS + void updateStyle(); +#endif + // CollapseButton *systemCollapseButton; +#ifdef Q_OS_WINDOWS +signals: + void styleUpdated(); +#endif + private: Ui::VMManagerDetails *ui; VMManagerSystem *sysconfig; @@ -68,6 +78,9 @@ private: QToolButton *configureButton; QToolButton *cadButton; + QIcon pauseIcon; + QIcon runIcon; + void updateConfig(VMManagerSystem *passed_sysconfig); void updateScreenshots(VMManagerSystem *passed_sysconfig); static QWidget* createHorizontalLine(int leftSpacing = 25, int rightSpacing = 25); diff --git a/src/qt/qt_vmmanager_detailsection.cpp b/src/qt/qt_vmmanager_detailsection.cpp index 23c940706..ab9a4b5ff 100644 --- a/src/qt/qt_vmmanager_detailsection.cpp +++ b/src/qt/qt_vmmanager_detailsection.cpp @@ -19,6 +19,15 @@ #include "ui_qt_vmmanager_detailsection.h" #include +#include "qt_util.hpp" + +#define HEADER_STYLESHEET_LIGHT "background-color: palette(midlight);" +#ifdef Q_OS_WINDOWS +# define HEADER_STYLESHEET_DARK "background-color: #616161;" +# define BACKGROUND_STYLESHEET_DARK "background-color: #272727;" +#else +# define HEADER_STYLESHEET_DARK "background-color: palette(mid);" +#endif const QString VMManagerDetailSection::sectionSeparator = ";"; using namespace VMManager; @@ -40,21 +49,18 @@ VMManagerDetailSection(const QString §ionName) // Simple method to try and determine if light mode is enabled on the host #ifdef Q_OS_WINDOWS - extern bool windows_is_light_theme(); - const bool lightMode = windows_is_light_theme(); + const bool lightMode = util::isWindowsLightTheme(); #else const bool lightMode = QApplication::palette().window().color().value() > QApplication::palette().windowText().color().value(); #endif // Alternate layout - if ( lightMode) { - ui->collapseButtonHolder->setStyleSheet("background-color: palette(midlight);"); + if (lightMode) { + ui->collapseButtonHolder->setStyleSheet(HEADER_STYLESHEET_LIGHT); } else { #ifdef Q_OS_WINDOWS - ui->outerFrame->setStyleSheet("background-color: #272727;"); - ui->collapseButtonHolder->setStyleSheet("background-color: #616161;"); -#else - ui->collapseButtonHolder->setStyleSheet("background-color: palette(mid);"); + ui->outerFrame->setStyleSheet(BACKGROUND_STYLESHEET_DARK); #endif + ui->collapseButtonHolder->setStyleSheet(HEADER_STYLESHEET_DARK); } const auto sectionLabel = new QLabel(sectionName); sectionLabel->setStyleSheet(sectionLabel->styleSheet().append("font-weight: bold;")); @@ -143,7 +149,6 @@ VMManagerDetailSection::addSection(const QString &name, const QString &value, Di { const auto new_section = DetailSection { name, value}; sections.push_back(new_section); - setSections(); } void @@ -154,8 +159,50 @@ VMManagerDetailSection::setupMainLayout() mainLayout = new QVBoxLayout; } void -VMManagerDetailSection::clearContentsSetupGrid() +VMManagerDetailSection::setSections() { + int row = 0; + + for (const auto& section : sections) { + QStringList sectionsToAdd = section.value.split(sectionSeparator); + QLabel *labelKey = nullptr; + + for (const auto& line : sectionsToAdd) { + if (line.isEmpty()) { + // Don't bother adding entries if the values are blank + continue; + } + + const auto labelValue = new QLabel(); + labelValue->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + labelValue->setTextInteractionFlags(labelValue->textInteractionFlags() | Qt::TextSelectableByMouse); + labelValue->setText(line); + frameGridLayout->addWidget(labelValue, row, 1, Qt::AlignLeft); + + if (!labelKey) { + labelKey = new QLabel(); + labelKey->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + labelKey->setTextInteractionFlags(labelValue->textInteractionFlags()); + labelKey->setText(QCoreApplication::translate("", QString(section.name + ":").toUtf8().data())); + frameGridLayout->addWidget(labelKey, row, 0, Qt::AlignLeft); + } + + const auto hSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); + frameGridLayout->addItem(hSpacer, row, 2); + row++; + } + } + + collapseButton->setContent(ui->detailFrame); + if (sections.size()) + setVisible(true); +} +void +VMManagerDetailSection::clear() +{ + sections.clear(); + setVisible(false); + // Clear everything out if(frameGridLayout) { while(frameGridLayout->count()) { @@ -168,76 +215,25 @@ VMManagerDetailSection::clearContentsSetupGrid() delete frameGridLayout; frameGridLayout = new QGridLayout(); - qint32 *left = nullptr, *top = nullptr, *right = nullptr, *bottom = nullptr; - frameGridLayout->getContentsMargins(left, top, right, bottom); frameGridLayout->setContentsMargins(getMargins(MarginSection::DisplayGrid)); ui->detailFrame->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); ui->detailFrame->setLayout(frameGridLayout); } + +#ifdef Q_OS_WINDOWS void -VMManagerDetailSection::setSections() +VMManagerDetailSection::updateStyle() { - clearContentsSetupGrid(); - int row = 0; - - - for ( const auto& section : sections) { - // if the string contains the separator (defined elsewhere) then split and - // add each entry on a new line. Otherwise, just add the one. - QStringList sectionsToAdd; - if(section.value.contains(sectionSeparator)) { - sectionsToAdd = section.value.split(sectionSeparator); - } else { - sectionsToAdd.push_back(section.value); - } - bool keyAdded = false; - for(const auto&line : sectionsToAdd) { - if(line.isEmpty()) { - // Don't bother adding entries if the values are blank - continue; - } - const auto labelKey = new QLabel(); - labelKey->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); - const auto labelValue = new QLabel(); - labelKey->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); - labelValue->setTextInteractionFlags(labelValue->textInteractionFlags() | Qt::TextSelectableByMouse); - labelKey->setTextInteractionFlags(labelValue->textInteractionFlags() | Qt::TextSelectableByMouse); - - // Reduce the text size for the label - // First, get the existing font - auto smaller_font = labelValue->font(); - // Get a smaller size - // Not sure if I like the smaller size, back to regular for now - // auto smaller_size = 0.85 * smaller_font.pointSize(); - const auto smaller_size = 1 * smaller_font.pointSize(); - // Set the font to the smaller size - smaller_font.setPointSizeF(smaller_size); - // Assign that new, smaller font to the label - labelKey->setFont(smaller_font); - labelValue->setFont(smaller_font); - - labelKey->setText(QCoreApplication::translate("", QString(section.name + ":").toUtf8().data())); - labelValue->setText(line); - if(!keyAdded) { - frameGridLayout->addWidget(labelKey, row, 0, Qt::AlignLeft); - keyAdded = true; - } - frameGridLayout->addWidget(labelValue, row, 1, Qt::AlignLeft); - const auto hSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); - frameGridLayout->addItem(hSpacer, row, 2); - row++; - } + const bool lightMode = util::isWindowsLightTheme(); + if (lightMode) { + ui->outerFrame->setStyleSheet(""); + ui->collapseButtonHolder->setStyleSheet(HEADER_STYLESHEET_LIGHT); + } else { + ui->outerFrame->setStyleSheet(BACKGROUND_STYLESHEET_DARK); + ui->collapseButtonHolder->setStyleSheet(HEADER_STYLESHEET_DARK); } - collapseButton->setContent(ui->detailFrame); - if (sections.size()) - setVisible(true); -} -void -VMManagerDetailSection::clear() -{ - sections.clear(); - setVisible(false); } +#endif // QT for Linux and Windows doesn't have the same default margins as QT on MacOS. // For consistency in appearance we'll have to return the margins on a per-OS basis diff --git a/src/qt/qt_vmmanager_detailsection.hpp b/src/qt/qt_vmmanager_detailsection.hpp index 7619a476c..3df7ce64c 100644 --- a/src/qt/qt_vmmanager_detailsection.hpp +++ b/src/qt/qt_vmmanager_detailsection.hpp @@ -61,8 +61,10 @@ public: ~VMManagerDetailSection() override; void addSection(const QString &name, const QString &value, VMManager::Display::Name displayField = VMManager::Display::Name::Unknown); + void setSections(); void clear(); + QLabel *tableLabel; CollapseButton *collapseButton; // QGridLayout *buttonGridLayout; QGridLayout *frameGridLayout; @@ -72,6 +74,10 @@ public: static const QString sectionSeparator; +#ifdef Q_OS_WINDOWS +public slots: + void updateStyle(); +#endif private: enum class MarginSection { @@ -82,7 +88,6 @@ private: void setSectionName(const QString &name); void setupMainLayout(); void clearContentsSetupGrid(); - void setSections(); static QMargins getMargins(MarginSection section); diff --git a/src/qt/qt_vmmanager_listviewdelegate.cpp b/src/qt/qt_vmmanager_listviewdelegate.cpp index 28820a044..c5d2e1dc9 100644 --- a/src/qt/qt_vmmanager_listviewdelegate.cpp +++ b/src/qt/qt_vmmanager_listviewdelegate.cpp @@ -18,13 +18,10 @@ #include +#include "qt_util.hpp" #include "qt_vmmanager_listviewdelegate.hpp" #include "qt_vmmanager_model.hpp" -#ifdef Q_OS_WINDOWS -extern bool windows_is_light_theme(); -#endif - // Thanks to scopchanov https://github.com/scopchanov/SO-MessageLog // from https://stackoverflow.com/questions/53105343/is-it-possible-to-add-a-custom-widget-into-a-qlistview @@ -34,6 +31,15 @@ VMManagerListViewDelegate::VMManagerListViewDelegate(QObject *parent) : QStyledItemDelegate(parent), m_ptr(new VMManagerListViewDelegateStyle) { + default_icon = QIcon(":/settings/qt/icons/86Box-gray.ico"); + stop_icon = QApplication::style()->standardIcon(QStyle::SP_MediaStop); + running_icon = QIcon(":/menuicons/qt/icons/run.ico"); + stopped_icon = QIcon(":/menuicons/qt/icons/acpi_shutdown.ico"); + paused_icon = QIcon(":/menuicons/qt/icons/pause.ico"); + unknown_icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion); + + highlight_color = QColor("#616161"); + bg_color = QColor("#272727"); } VMManagerListViewDelegate::~VMManagerListViewDelegate() @@ -43,7 +49,7 @@ void VMManagerListViewDelegate::paint(QPainter *painter, const QStyleOptionViewI const QModelIndex &index) const { bool windows_light_mode = true; #ifdef Q_OS_WINDOWS - windows_light_mode = windows_is_light_theme(); + windows_light_mode = util::isWindowsLightTheme(); #endif QStyleOptionViewItem opt(option); initStyleOption(&opt, index); @@ -56,34 +62,33 @@ void VMManagerListViewDelegate::paint(QPainter *painter, const QStyleOptionViewI -m_ptr->margins.bottom())); // The status icon represents the current state of the vm. Initially set to a default state. - QIcon status_icon = QApplication::style()->standardIcon(QStyle::SP_MediaStop); auto process_variant = index.data(VMManagerModel::Roles::ProcessStatus); auto process_status = process_variant.value(); // The main icon, configurable. Falls back to default if it cannot be loaded. - auto customIcom = index.data(VMManagerModel::Roles::Icon).toString(); - opt.icon = QIcon(":/settings/qt/icons/86Box-gray.ico"); - if(!customIcom.isEmpty()) { - if (const auto customPixmap = QPixmap(customIcom); !customPixmap.isNull()) { + auto customIcon = index.data(VMManagerModel::Roles::Icon).toString(); + opt.icon = default_icon; + if (!customIcon.isEmpty()) { + const auto customPixmap = QPixmap(customIcon); + if (!customPixmap.isNull()) opt.icon = customPixmap; - } } - // opt.icon = QIcon(":/settings/qt/icons/86Box-gray.ico"); // Set the status icon based on the process status + QIcon status_icon; switch(process_status) { case VMManagerSystem::ProcessStatus::Running: - status_icon = QIcon(":/menuicons/qt/icons/run.ico"); + status_icon = running_icon; break; case VMManagerSystem::ProcessStatus::Stopped: - status_icon = QIcon(":/menuicons/qt/icons/acpi_shutdown.ico"); + status_icon = stopped_icon; break; case VMManagerSystem::ProcessStatus::PausedWaiting: case VMManagerSystem::ProcessStatus::RunningWaiting: case VMManagerSystem::ProcessStatus::Paused: - status_icon = QIcon(":/menuicons/qt/icons/pause.ico"); + status_icon = paused_icon; break; default: - status_icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion); + status_icon = unknown_icon; } @@ -105,13 +110,13 @@ void VMManagerListViewDelegate::paint(QPainter *painter, const QStyleOptionViewI // When selected, only draw the highlighted part until the horizontal separator int offset = 2; auto highlightRect = rect.adjusted(0, 0, 0, -offset); - painter->fillRect(highlightRect, windows_light_mode ? palette.highlight().color() : QColor("#616161")); + painter->fillRect(highlightRect, windows_light_mode ? palette.highlight().color() : highlight_color); // Then fill the remainder with the normal color auto regularRect = rect.adjusted(0, rect.height()-offset, 0, 0); - painter->fillRect(regularRect, windows_light_mode ? palette.light().color() : QColor("#272727")); + painter->fillRect(regularRect, windows_light_mode ? palette.light().color() : bg_color); } else { // Otherwise just draw the background color as usual - painter->fillRect(rect, windows_light_mode ? palette.light().color() : QColor("#272727")); + painter->fillRect(rect, windows_light_mode ? palette.light().color() : bg_color); } // Draw bottom line. Last line gets a different color diff --git a/src/qt/qt_vmmanager_listviewdelegate.hpp b/src/qt/qt_vmmanager_listviewdelegate.hpp index 84325086d..9e320653b 100644 --- a/src/qt/qt_vmmanager_listviewdelegate.hpp +++ b/src/qt/qt_vmmanager_listviewdelegate.hpp @@ -63,5 +63,15 @@ public: const QModelIndex &index) const override; private: VMManagerListViewDelegateStyle *m_ptr; + + QIcon default_icon; + QIcon stop_icon; + QIcon running_icon; + QIcon stopped_icon; + QIcon paused_icon; + QIcon unknown_icon; + + QColor bg_color; + QColor highlight_color; }; #endif // QT_VMMANAGER_LISTVIEWDELEGATE_H \ No newline at end of file diff --git a/src/qt/qt_vmmanager_main.cpp b/src/qt/qt_vmmanager_main.cpp index 3dcb4d511..cfded658e 100644 --- a/src/qt/qt_vmmanager_main.cpp +++ b/src/qt/qt_vmmanager_main.cpp @@ -114,29 +114,6 @@ VMManagerMain::VMManagerMain(QWidget *parent) : }); nameChangeAction.setEnabled(!selected_sysconfig->window_obscured); - QAction openSystemFolderAction(tr("&Open folder...")); - contextMenu.addAction(&openSystemFolderAction); - connect(&openSystemFolderAction, &QAction::triggered, [indexAt] { - if (const auto configDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString(); !configDir.isEmpty()) { - QDir dir(configDir); - if (!dir.exists()) - dir.mkpath("."); - - QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath())); - } - }); - - QAction openPrinterFolderAction(tr("Open &printer tray...")); - contextMenu.addAction(&openPrinterFolderAction); - connect(&openPrinterFolderAction, &QAction::triggered, [indexAt] { - if (const auto printerDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/printer/"); !printerDir.isEmpty()) { - QDir dir(printerDir); - if (!dir.exists()) - dir.mkpath("."); - - QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath())); - } - }); QAction setSystemIcon(tr("Set &icon...")); contextMenu.addAction(&setSystemIcon); @@ -150,6 +127,8 @@ VMManagerMain::VMManagerMain(QWidget *parent) : }); setSystemIcon.setEnabled(!selected_sysconfig->window_obscured); + contextMenu.addSeparator(); + QAction cloneMachine(tr("C&lone...")); contextMenu.addAction(&cloneMachine); connect(&cloneMachine, &QAction::triggered, [this] { @@ -168,7 +147,7 @@ VMManagerMain::VMManagerMain(QWidget *parent) : connect(buttonBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject); layout->addWidget(buttonBox); - connect(edit, &QLineEdit::textChanged, this, [this, errLabel, buttonBox] (const QString& text) { + connect(edit, &QLineEdit::textChanged, this, [errLabel, buttonBox] (const QString& text) { bool isSpaceOnly = true; #ifdef Q_OS_WINDOWS const char illegalChars[] = "<>:\"|?*\\/"; @@ -226,7 +205,8 @@ illegal_chars: progDialog->setMaximum(0); progDialog->setMinimum(0); progDialog->setWindowFlags(progDialog->windowFlags() & ~Qt::WindowCloseButtonHint); - progDialog->setFixedSize(progDialog->sizeHint()); + progDialog->setMinimumSize(progDialog->sizeHint()); + progDialog->setMaximumSize(progDialog->sizeHint()); progDialog->setMinimumDuration(0); progDialog->setCancelButton(nullptr); progDialog->setAutoClose(false); @@ -238,7 +218,7 @@ illegal_chars: QString srcPath = selected_sysconfig->config_dir; QString dstPath = vmDir; - std::thread copyThread([this, &finished, srcPath, dstPath, &errCode] { + std::thread copyThread([&finished, srcPath, dstPath, &errCode] { errCode = copyPath(srcPath, dstPath, true); finished = true; }); @@ -282,6 +262,7 @@ illegal_chars: QMessageBox msgbox(QMessageBox::Warning, tr("Warning"), tr("Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?").arg(selected_sysconfig->displayName), QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, parent); msgbox.exec(); if (msgbox.result() == QMessageBox::Yes) { + disconnect(selected_sysconfig->process, QOverload::of(&QProcess::finished), nullptr, nullptr); selected_sysconfig->process->kill(); } }); @@ -296,7 +277,7 @@ illegal_chars: if (QDir(selected_sysconfig->config_dir + "/nvr/").removeRecursively()) QMessageBox::information(this, tr("Success"), tr("Successfully wiped the NVRAM contents of the virtual machine \"%1\"").arg(selected_sysconfig->displayName)); else { - QMessageBox::critical(this, tr("Error"), tr("An error occured trying to wipe the NVRAM contents of the virtual machine \"%1\"").arg(selected_sysconfig->displayName)); + QMessageBox::critical(this, tr("Error"), tr("An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\"").arg(selected_sysconfig->displayName)); } } }); @@ -304,13 +285,49 @@ illegal_chars: QAction deleteAction(tr("&Delete")); contextMenu.addAction(&deleteAction); - connect(&deleteAction, &QAction::triggered, [this, parent] { + connect(&deleteAction, &QAction::triggered, [this] { deleteSystem(selected_sysconfig); }); deleteAction.setEnabled(selected_sysconfig->process->state() == QProcess::NotRunning); contextMenu.addSeparator(); + QAction openSystemFolderAction(tr("&Open folder...")); + contextMenu.addAction(&openSystemFolderAction); + connect(&openSystemFolderAction, &QAction::triggered, [indexAt] { + if (const auto configDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString(); !configDir.isEmpty()) { + QDir dir(configDir); + if (!dir.exists()) + dir.mkpath("."); + + QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath())); + } + }); + + QAction openPrinterFolderAction(tr("Open p&rinter tray...")); + contextMenu.addAction(&openPrinterFolderAction); + connect(&openPrinterFolderAction, &QAction::triggered, [indexAt] { + if (const auto printerDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/printer/"); !printerDir.isEmpty()) { + QDir dir(printerDir); + if (!dir.exists()) + dir.mkpath("."); + + QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath())); + } + }); + + QAction openScreenshotsFolderAction(tr("Open screenshots &folder...")); + contextMenu.addAction(&openScreenshotsFolderAction); + connect(&openScreenshotsFolderAction, &QAction::triggered, [indexAt] { + if (const auto screenshotsDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/screenshots/"); !screenshotsDir.isEmpty()) { + QDir dir(screenshotsDir); + if (!dir.exists()) + dir.mkpath("."); + + QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath())); + } + }); + QAction showRawConfigFile(tr("Show &config file")); contextMenu.addAction(&showRawConfigFile); connect(&showRawConfigFile, &QAction::triggered, [this, indexAt] { @@ -319,12 +336,20 @@ illegal_chars: } }); + contextMenu.exec(ui->listView->viewport()->mapToGlobal(pos)); + } else { + QMenu contextMenu(tr("Context Menu"), ui->listView); + + QAction newMachineAction(tr("New machine...")); + contextMenu.addAction(&newMachineAction); + connect(&newMachineAction, &QAction::triggered, this, &VMManagerMain::newMachineWizard); + contextMenu.exec(ui->listView->viewport()->mapToGlobal(pos)); } }); // Initial default details view - vm_details = new VMManagerDetails(); + vm_details = new VMManagerDetails(ui->detailsArea); ui->detailsArea->layout()->addWidget(vm_details); const QItemSelectionModel *selection_model = ui->listView->selectionModel(); @@ -357,7 +382,7 @@ illegal_chars: // Set initial status bar after the event loop starts QTimer::singleShot(0, this, [this] { - emit updateStatusRight(totalCountString()); + emit updateStatusRight(machineCountString()); }); #if EMU_BUILD_NUM != 0 @@ -573,17 +598,17 @@ VMManagerMain::newMachineWizard() void VMManagerMain::addNewSystem(const QString &name, const QString &dir, const QString &displayName, const QString &configFile) { - const auto newSytemDirectory = QDir(QDir::cleanPath(dir + "/" + name)); + const auto newSystemDirectory = QDir(QDir::cleanPath(dir + "/" + name)); // qt replaces `/` with native separators - const auto newSystemConfigFile = QFileInfo(newSytemDirectory.path() + "/" + "86box.cfg"); - if (newSystemConfigFile.exists() || newSytemDirectory.exists()) { + const auto newSystemConfigFile = QFileInfo(newSystemDirectory.path() + "/" + CONFIG_FILE); + if (newSystemConfigFile.exists() || newSystemDirectory.exists()) { QMessageBox::critical(this, tr("Directory in use"), tr("The selected directory is already in use. Please select a different directory.")); return; } // Create the directory const QDir qmkdir; - if (const bool mkdirResult = qmkdir.mkdir(newSytemDirectory.path()); !mkdirResult) { + if (const bool mkdirResult = qmkdir.mkdir(newSystemDirectory.path()); !mkdirResult) { QMessageBox::critical(this, tr("Create directory failed"), tr("Unable to create the directory for the new system")); return; } @@ -604,24 +629,30 @@ VMManagerMain::addNewSystem(const QString &name, const QString &dir, const QStri const auto new_system = new VMManagerSystem(newSystemConfigFile.absoluteFilePath()); new_system->launchSettings(); // Handle this in a closure so we can capture the temporary new_system object + disconnect(new_system->process, QOverload::of(&QProcess::finished), nullptr, nullptr); connect(new_system->process, QOverload::of(&QProcess::finished), [=](const int exitCode, const QProcess::ExitStatus exitStatus) { + bool fail = false; if (exitCode != 0 || exitStatus != QProcess::NormalExit) { qInfo().nospace().noquote() << "Abnormal program termination while creating new system: exit code " << exitCode << ", exit status " << exitStatus; qInfo() << "Not adding system due to errors"; + QString errMsg = tr("The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2.").arg( + (!displayName.isEmpty() ? displayName : name), QString::number(exitCode)); QMessageBox::critical(this, tr("Error adding system"), - tr("Abnormal program termination while creating new system: exit code %1, exit status %2.\n\nThe system will not be added.").arg(QString::number(exitCode), exitStatus)); - delete new_system; - return; + QString("%1\n\n%2").arg(errMsg, tr("The system will not be added."))); + fail = true; } // Create a new QFileInfo because the info from the old one may be cached if (const auto fi = QFileInfo(new_system->config_file.absoluteFilePath()); !fi.exists()) { // No config file which means the cancel button was pressed in the settings dialog // Attempt to clean up the directory that was created const QDir qrmdir; - if (const bool result = qrmdir.rmdir(newSytemDirectory.path()); !result) { + if (const bool result = qrmdir.rmdir(newSystemDirectory.path()); !result) { qWarning() << "Error cleaning up the old directory for canceled operation. Continuing anyway."; } + fail = true; + } + if (fail) { delete new_system; return; } @@ -686,10 +717,14 @@ VMManagerMain::getSearchCompletionList() const } QString -VMManagerMain::totalCountString() const +VMManagerMain::machineCountString(QString states) const { const auto count = vm_model->rowCount(QModelIndex()); - return QString("%1 %2").arg(QString::number(count), tr("total")); + if (!states.isEmpty()) + states.append(", "); + states.append(tr("%1 total").arg(count)); + + return tr("VMs: %1").arg(states); } void @@ -701,14 +736,26 @@ VMManagerMain::modelDataChange() QStringList stats; for (auto it = modelStats.constBegin(); it != modelStats.constEnd(); ++it) { const auto &key = it.key(); - stats.append(QString("%1 %2").arg(QString::number(modelStats[key]), key)); + QString text = ""; + switch (key) { + case VMManagerSystem::ProcessStatus::Running: + text = tr("%n running", "", modelStats[key]); + break; + case VMManagerSystem::ProcessStatus::Paused: + text = tr("%n paused", "", modelStats[key]); + break; + case VMManagerSystem::ProcessStatus::PausedWaiting: + case VMManagerSystem::ProcessStatus::RunningWaiting: + text = tr("%n waiting", "", modelStats[key]); + break; + default: + break; + } + if(!text.isEmpty()) + stats.append(text); } auto states = stats.join(", "); - if (!modelStats.isEmpty()) { - states.append(", "); - } - - emit updateStatusRight(states + totalCountString()); + emit updateStatusRight(machineCountString(states)); } void @@ -723,6 +770,29 @@ VMManagerMain::onPreferencesUpdated() } } +void +VMManagerMain::onLanguageUpdated() +{ + vm_model->refreshConfigs(); + modelDataChange(); + /* Hack to work around details widgets not being re-translatable + without going through layers of abstraction */ + ui->detailsArea->layout()->removeWidget(vm_details); + delete vm_details; + vm_details = new VMManagerDetails(); + ui->detailsArea->layout()->addWidget(vm_details); + if (vm_model->rowCount(QModelIndex()) > 0) + vm_details->updateData(selected_sysconfig); +} + +#ifdef Q_OS_WINDOWS +void +VMManagerMain::onDarkModeUpdated() +{ + vm_details->updateStyle(); +} +#endif + int VMManagerMain::getActiveMachineCount() { @@ -747,16 +817,18 @@ void VMManagerMain::backgroundUpdateCheckComplete(const UpdateCheck::UpdateResult &result) { qDebug() << "Check complete: update available?" << result.updateAvailable; - auto type = result.channel == UpdateCheck::UpdateChannel::CI ? tr("Build") : tr("Version"); - const auto updateMessage = QString("%1: %2 %3").arg( tr("An update to 86Box is available"), type, result.latestVersion); - emit updateStatusLeft(updateMessage); + if (result.updateAvailable) { + auto type = result.channel == UpdateCheck::UpdateChannel::CI ? tr("build") : tr("version"); + const auto updateMessage = tr("An update to 86Box is available: %1 %2").arg(type, result.latestVersion); + emit updateStatusLeft(updateMessage); + } } void VMManagerMain::backgroundUpdateCheckError(const QString &errorMsg) { qDebug() << "Update check failed with the following error:" << errorMsg; - // TODO: Update the status bar + emit updateStatusLeft(tr("An error has occurred while checking for updates: %1").arg(errorMsg)); } #endif diff --git a/src/qt/qt_vmmanager_main.hpp b/src/qt/qt_vmmanager_main.hpp index 9b9401d0f..be43da705 100644 --- a/src/qt/qt_vmmanager_main.hpp +++ b/src/qt/qt_vmmanager_main.hpp @@ -79,6 +79,10 @@ public slots: #endif void modelDataChange(); void onPreferencesUpdated(); + void onLanguageUpdated(); +#ifdef Q_OS_WINDOWS + void onDarkModeUpdated(); +#endif void onConfigUpdated(const QString &uuid); int getActiveMachineCount(); @@ -103,7 +107,7 @@ private: void updateDisplayName(const QModelIndex &index); void loadSettings(); [[nodiscard]] bool currentSelectionIsValid() const; - [[nodiscard]] QString totalCountString() const; + [[nodiscard]] QString machineCountString(QString states = "") const; #if EMU_BUILD_NUM != 0 void backgroundUpdateCheckStart() const; #endif diff --git a/src/qt/qt_vmmanager_main.ui b/src/qt/qt_vmmanager_main.ui index 582645b9f..566cea862 100644 --- a/src/qt/qt_vmmanager_main.ui +++ b/src/qt/qt_vmmanager_main.ui @@ -82,7 +82,7 @@ Qt::ClickFocus - Search + Search true diff --git a/src/qt/qt_vmmanager_mainwindow.cpp b/src/qt/qt_vmmanager_mainwindow.cpp index f6abc4674..6ee8979cd 100644 --- a/src/qt/qt_vmmanager_mainwindow.cpp +++ b/src/qt/qt_vmmanager_mainwindow.cpp @@ -23,6 +23,8 @@ # include "qt_updatecheckdialog.hpp" #endif #include "qt_about.hpp" +#include "qt_progsettings.hpp" +#include "qt_util.hpp" #include #include @@ -74,7 +76,7 @@ VMManagerMainWindow(QWidget *parent) const auto searchBar = new QLineEdit(); searchBar->setMinimumWidth(150); - searchBar->setPlaceholderText(" " + tr("Search")); + searchBar->setPlaceholderText(tr("Search")); searchBar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); searchBar->setClearButtonEnabled(true); // Spacer to make the search go all the way to the right @@ -113,6 +115,36 @@ VMManagerMainWindow(QWidget *parent) // Inform the main view when preferences are updated connect(this, &VMManagerMainWindow::preferencesUpdated, vmm, &VMManagerMain::onPreferencesUpdated); + connect(this, &VMManagerMainWindow::languageUpdated, vmm, &VMManagerMain::onLanguageUpdated); +#ifdef Q_OS_WINDOWS + connect(this, &VMManagerMainWindow::darkModeUpdated, vmm, &VMManagerMain::onDarkModeUpdated); +#endif + + { + auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); + this->ui->actionRemember_size_and_position->setChecked(!!config->getStringValue("window_remember").toInt()); + if (ui->actionRemember_size_and_position->isChecked()) { + QStringList list = config->getStringValue("window_coordinates").split(','); + for (auto& cur : list) { + cur = cur.trimmed(); + } + QRect geom; + geom.setX(list[0].toInt()); + geom.setY(list[1].toInt()); + geom.setWidth(list[2].toInt()); + geom.setHeight(list[3].toInt()); + + setGeometry(geom); + if (!!config->getStringValue("window_maximized").toInt()) { + setWindowState(windowState() | Qt::WindowMaximized); + } + } else { + config->setStringValue("window_remember", ""); + config->setStringValue("window_coordinates", ""); + config->setStringValue("window_maximized", ""); + } + delete config; + } } @@ -151,6 +183,7 @@ VMManagerMainWindow::preferencesTriggered() const auto prefs = new VMManagerPreferences(); if (prefs->exec() == QDialog::Accepted) { emit preferencesUpdated(); + updateLanguage(); } } @@ -160,10 +193,49 @@ VMManagerMainWindow::saveSettings() const const auto currentSelection = vmm->getCurrentSelection(); const auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); config->setStringValue("last_selection", currentSelection); + config->setStringValue("window_remember", QString::number(ui->actionRemember_size_and_position->isChecked())); + if (ui->actionRemember_size_and_position->isChecked()) { + config->setStringValue("window_coordinates", QString::asprintf("%i, %i, %i, %i", this->geometry().x(), this->geometry().y(), this->geometry().width(), this->geometry().height())); + config->setStringValue("window_maximized", this->isMaximized() ? "1" : ""); + } else { + config->setStringValue("window_remember", ""); + config->setStringValue("window_coordinates", ""); + config->setStringValue("window_maximized", ""); + } // Sometimes required to ensure the settings save before the app exits config->sync(); } +void +VMManagerMainWindow::updateLanguage() +{ + ProgSettings::loadTranslators(QCoreApplication::instance()); + ProgSettings::reloadStrings(); + ui->retranslateUi(this); + setWindowTitle(tr("%1 VM Manager").arg(EMU_NAME)); + emit languageUpdated(); +} + + +#ifdef Q_OS_WINDOWS +void +VMManagerMainWindow::updateDarkMode() +{ + emit darkModeUpdated(); +} +#endif + +void +VMManagerMainWindow::changeEvent(QEvent *event) +{ +#ifdef Q_OS_WINDOWS + if (event->type() == QEvent::LanguageChange) { + QApplication::setFont(QFont(ProgSettings::getFontName(lang_id), 9)); + } +#endif + QWidget::changeEvent(event); +} + void VMManagerMainWindow::closeEvent(QCloseEvent *event) { diff --git a/src/qt/qt_vmmanager_mainwindow.hpp b/src/qt/qt_vmmanager_mainwindow.hpp index ca7b0043d..bde74765c 100644 --- a/src/qt/qt_vmmanager_mainwindow.hpp +++ b/src/qt/qt_vmmanager_mainwindow.hpp @@ -36,6 +36,10 @@ public: ~VMManagerMainWindow() override; signals: void preferencesUpdated(); + void languageUpdated(); +#ifdef Q_OS_WINDOWS + void darkModeUpdated(); +#endif private: Ui::VMManagerMainWindow *ui; @@ -46,6 +50,10 @@ private: public slots: void setStatusLeft(const QString &text) const; void setStatusRight(const QString &text) const; + void updateLanguage(); +#ifdef Q_OS_WINDOWS + void updateDarkMode(); +#endif private slots: void vmmSelectionChanged(const QModelIndex ¤tSelection, QProcess::ProcessState processState) const; @@ -60,6 +68,7 @@ private slots: void on_actionAbout_Qt_triggered(); protected: + void changeEvent(QEvent *event) override; void closeEvent(QCloseEvent *event) override; }; diff --git a/src/qt/qt_vmmanager_mainwindow.ui b/src/qt/qt_vmmanager_mainwindow.ui index fa32241a4..15739628d 100644 --- a/src/qt/qt_vmmanager_mainwindow.ui +++ b/src/qt/qt_vmmanager_mainwindow.ui @@ -11,7 +11,7 @@ - MainWindow + 86Box VM Manager @@ -28,6 +28,7 @@ &Tools + @@ -186,6 +187,14 @@ New machine... + + + true + + + R&emember size && position + + &Preferences... diff --git a/src/qt/qt_vmmanager_model.cpp b/src/qt/qt_vmmanager_model.cpp index 3f6bdc4f9..40baac90a 100644 --- a/src/qt/qt_vmmanager_model.cpp +++ b/src/qt/qt_vmmanager_model.cpp @@ -167,15 +167,12 @@ VMManagerModel::updateDisplayName(const QModelIndex &index, const QString &newDi machines.at(index.row())->setDisplayName(newDisplayName); modelDataChanged(); } -QHash +QMap VMManagerModel::getProcessStats() { - QHash stats; + QMap stats; for (const auto& system: machines) { - if (system->getProcessStatus() != VMManagerSystem::ProcessStatus::Stopped) { - auto statusString = system->getProcessStatusString(); - stats[statusString] += 1; - } + stats[system->getProcessStatus()] += 1; } return stats; } diff --git a/src/qt/qt_vmmanager_model.hpp b/src/qt/qt_vmmanager_model.hpp index 4205e8098..159dad9f2 100644 --- a/src/qt/qt_vmmanager_model.hpp +++ b/src/qt/qt_vmmanager_model.hpp @@ -57,7 +57,7 @@ public: QModelIndex getIndexForConfigFile(const QFileInfo& config_file); void reload(QWidget* parent = nullptr); void updateDisplayName(const QModelIndex &index, const QString &newDisplayName); - QHash getProcessStats(); + QMap getProcessStats(); int getActiveMachineCount(); void refreshConfigs(); signals: diff --git a/src/qt/qt_vmmanager_preferences.cpp b/src/qt/qt_vmmanager_preferences.cpp index 4880900aa..49b7b4a1f 100644 --- a/src/qt/qt_vmmanager_preferences.cpp +++ b/src/qt/qt_vmmanager_preferences.cpp @@ -17,13 +17,17 @@ #include #include +#include +#include "qt_progsettings.hpp" #include "qt_vmmanager_preferences.hpp" #include "qt_vmmanager_config.hpp" #include "ui_qt_vmmanager_preferences.h" extern "C" { #include <86box/86box.h> +#include <86box/config.h> +#include <86box/version.h> } VMManagerPreferences:: @@ -34,15 +38,24 @@ VMManagerPreferences(QWidget *parent) : ui(new Ui::VMManagerPreferences) connect(ui->dirSelectButton, &QPushButton::clicked, this, &VMManagerPreferences::chooseDirectoryLocation); const auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); - const auto configSystemDir = config->getStringValue("system_directory"); + const auto configSystemDir = QString(vmm_path_cfg); if(!configSystemDir.isEmpty()) { // Prefer this one - ui->systemDirectory->setText(configSystemDir); + ui->systemDirectory->setText(QDir::toNativeSeparators(configSystemDir)); } else if(!QString(vmm_path).isEmpty()) { // If specified on command line - ui->systemDirectory->setText(QDir(vmm_path).path()); + ui->systemDirectory->setText(QDir::toNativeSeparators(QDir(vmm_path).path())); } + ui->comboBoxLanguage->setItemData(0, 0); + for (int i = 1; i < ProgSettings::languages.length(); i++) { + ui->comboBoxLanguage->addItem(ProgSettings::languages[i].second, i); + if (i == lang_id) { + ui->comboBoxLanguage->setCurrentIndex(ui->comboBoxLanguage->findData(i)); + } + } + ui->comboBoxLanguage->model()->sort(Qt::AscendingOrder); + // TODO: Defaults #if EMU_BUILD_NUM != 0 const auto configUpdateCheck = config->getStringValue("update_check").toInt(); @@ -64,16 +77,26 @@ VMManagerPreferences() void VMManagerPreferences::chooseDirectoryLocation() { - // TODO: FIXME: This is pulling in the CLI directory! Needs to be set properly elsewhere - const auto directory = QFileDialog::getExistingDirectory(this, tr("Choose directory"), QDir(vmm_path).path()); - ui->systemDirectory->setText(QDir::toNativeSeparators(directory)); + const auto directory = QFileDialog::getExistingDirectory(this, tr("Choose directory"), ui->systemDirectory->text()); + if (!directory.isEmpty()) + ui->systemDirectory->setText(QDir::toNativeSeparators(directory)); +} + +void +VMManagerPreferences::on_pushButtonLanguage_released() +{ + ui->comboBoxLanguage->setCurrentIndex(0); } void VMManagerPreferences::accept() { const auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); - config->setStringValue("system_directory", ui->systemDirectory->text()); + + strncpy(vmm_path_cfg, QDir::cleanPath(ui->systemDirectory->text()).toUtf8().constData(), sizeof(vmm_path_cfg) - 1); + lang_id = ui->comboBoxLanguage->currentData().toInt(); + config_save_global(); + #if EMU_BUILD_NUM != 0 config->setStringValue("update_check", ui->updateCheckBox->isChecked() ? "1" : "0"); #endif diff --git a/src/qt/qt_vmmanager_preferences.hpp b/src/qt/qt_vmmanager_preferences.hpp index aedba862a..d28ff79ac 100644 --- a/src/qt/qt_vmmanager_preferences.hpp +++ b/src/qt/qt_vmmanager_preferences.hpp @@ -37,6 +37,7 @@ private: QString settingsFile; private slots: void chooseDirectoryLocation(); + void on_pushButtonLanguage_released(); protected: void accept() override; void reject() override; diff --git a/src/qt/qt_vmmanager_preferences.ui b/src/qt/qt_vmmanager_preferences.ui index 1743a0bfb..37caaae56 100644 --- a/src/qt/qt_vmmanager_preferences.ui +++ b/src/qt/qt_vmmanager_preferences.ui @@ -53,6 +53,42 @@ + + + + Language: + + + + + + + + + + 0 + 0 + + + + 30 + + + + (System Default) + + + + + + + + Default + + + + + @@ -92,6 +128,13 @@ + + dirSelectButton + comboBoxLanguage + pushButtonLanguage + updateCheckBox + regexSearchCheckBox + diff --git a/src/qt/qt_vmmanager_system.cpp b/src/qt/qt_vmmanager_system.cpp index 5130ac50c..00b699163 100644 --- a/src/qt/qt_vmmanager_system.cpp +++ b/src/qt/qt_vmmanager_system.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include "qt_util.hpp" @@ -132,27 +133,16 @@ VMManagerSystem::scanForConfigs(QWidget* parent, const QString &searchPath) progDialog.setMinimum(0); progDialog.setMaximum(0); progDialog.setWindowFlags(progDialog.windowFlags() & ~Qt::WindowCloseButtonHint); - progDialog.setFixedSize(progDialog.sizeHint()); + progDialog.setMinimumSize(progDialog.sizeHint()); + progDialog.setMaximumSize(progDialog.sizeHint()); QElapsedTimer scanTimer; scanTimer.start(); QVector system_configs; - const auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); - auto systemDirConfig = config->getStringValue("system_directory"); - - const auto config_file_name = QString("86box.cfg"); + const auto config_file_name = QString(CONFIG_FILE); const QStringList filters = {config_file_name}; QStringList matches; - // TODO: Preferences. Once I get the CLI args worked out. - // For now it just takes vmm_path from the CLI QString search_directory; - // if(searchPath.isEmpty()) { - // // If the location isn't specified in function call, use the one loaded - // // from the config file - // search_directory = systemDirConfig; - // } else { - // search_directory = searchPath; - // } search_directory = searchPath.isEmpty()? vmm_path : searchPath; @@ -253,7 +243,11 @@ VMManagerSystem::loadSettings() QString setting_value; // QSettings will interpret lines with commas as QStringList. // Check for it and join them back to a string. +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + if (settings.value(key_name).typeId() == QMetaType::QStringList) { +#else if (settings.value(key_name).type() == QVariant::StringList) { +#endif setting_value = settings.value(key_name).toStringList().join(", "); } else { setting_value = settings.value(key_name).toString(); @@ -441,6 +435,8 @@ VMManagerSystem::launchMainProcess() { [=](const int exitCode, const QProcess::ExitStatus exitStatus){ if (exitCode != 0 || exitStatus != QProcess::NormalExit) { qInfo().nospace().noquote() << "Abnormal program termination while launching main process: exit code " << exitCode << ", exit status " << exitStatus; + QMessageBox::critical(this, tr("Virtual machine crash"), + tr("The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2.").arg(displayName, QString::number(exitCode))); return; } }); @@ -494,6 +490,8 @@ VMManagerSystem::launchSettings() { [=](const int exitCode, const QProcess::ExitStatus exitStatus){ if (exitCode != 0 || exitStatus != QProcess::NormalExit) { qInfo().nospace().noquote() << "Abnormal program termination while launching settings: exit code " << exitCode << ", exit status " << exitStatus; + QMessageBox::critical(this, tr("Virtual machine crash"), + tr("The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2.").arg(displayName, QString("%1 (0x%2)").arg(QString::number(exitCode), QString::number(exitCode, 16)))); return; } @@ -624,10 +622,12 @@ VMManagerSystem::setupVars() { display_table[Display::Name::Video].append(tr("IBM PS/55 Display Adapter Graphics").prepend(VMManagerDetailSection::sectionSeparator)); // Voodoo + QString voodoo_name = ""; if (video_config.contains("voodoo") && (video_config["voodoo"].toInt() != 0)) { - auto voodoo_config = getCategory(DeviceConfig::DeviceName(&voodoo_device, "voodoo", 0)); + char temp[512]; + device_get_name(&voodoo_device, 0, temp); + auto voodoo_config = getCategory(QString(temp)); int voodoo_type = voodoo_config["type"].toInt(); - QString voodoo_name; switch (voodoo_type) { case 0: default: @@ -640,8 +640,8 @@ VMManagerSystem::setupVars() { voodoo_name = tr("3Dfx Voodoo 2"); break; } - display_table[Display::Name::Voodoo] = voodoo_name; } + display_table[Display::Name::Voodoo] = voodoo_name; // Drives // First the number of disks @@ -1030,12 +1030,13 @@ VMManagerSystem::setupVars() { display_table[Display::Name::Parallel] = (lptFinal.empty() ? tr("None") : lptFinal.join((hasLptDevices ? VMManagerDetailSection::sectionSeparator : ", "))); // ISA RTC + QString isartc_dev_name = ""; if (other_config.contains("isartc_type")) { auto isartc_internal_name = other_config["isartc_type"]; auto isartc_dev = isartc_get_from_internal_name(isartc_internal_name.toUtf8().data()); - auto isartc_dev_name = DeviceConfig::DeviceName(isartc_get_device(isartc_dev), isartc_get_internal_name(isartc_dev), 0); - display_table[Display::Name::IsaRtc] = isartc_dev_name; + isartc_dev_name = DeviceConfig::DeviceName(isartc_get_device(isartc_dev), isartc_get_internal_name(isartc_dev), 0); } + display_table[Display::Name::IsaRtc] = isartc_dev_name; // ISA RAM QStringList IsaMemCards; @@ -1175,7 +1176,7 @@ VMManagerSystem::processStatusToString(VMManagerSystem::ProcessStatus status) return tr("Paused"); case VMManagerSystem::ProcessStatus::PausedWaiting: case VMManagerSystem::ProcessStatus::RunningWaiting: - return tr("Paused (Waiting)"); + return QString("%1 (%2)").arg(tr("Paused"), tr("Waiting")); default: return tr("Unknown Status"); } diff --git a/src/qt/qt_vmmanager_windarkmodefilter.cpp b/src/qt/qt_vmmanager_windarkmodefilter.cpp new file mode 100644 index 000000000..195419ad9 --- /dev/null +++ b/src/qt/qt_vmmanager_windarkmodefilter.cpp @@ -0,0 +1,99 @@ +/* + * 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. + * + * Generic Windows native event filter for dark mode handling + * + * + * + * Authors: Teemu Korhonen + * Cacodemon345 + * + * Copyright 2021 Teemu Korhonen + * Copyright 2024-2025 Cacodemon345. + */ + +#include "qt_vmmanager_windarkmodefilter.hpp" + +#include +#include +#include +#include +#include + +#include +#include +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +#include <86box/86box.h> +#include <86box/plat.h> + +#include "qt_util.hpp" + +static bool NewDarkMode = FALSE; + +void +WindowsDarkModeFilter::setWindow(VMManagerMainWindow *window) +{ + this->window = window; +} + +bool +WindowsDarkModeFilter::nativeEventFilter(const QByteArray &eventType, void *message, result_t *result) +{ + if ((window != nullptr) && (eventType == "windows_generic_MSG")) { + MSG *msg = static_cast(message); + + if ((msg != nullptr) && (msg->message == WM_SETTINGCHANGE)) { + if ((((void *) msg->lParam) != nullptr) && + (wcscmp(L"ImmersiveColorSet", (wchar_t*)msg->lParam) == 0)) { + + bool OldDarkMode = NewDarkMode; + + if (!util::isWindowsLightTheme()) { + QFile f(":qdarkstyle/dark/darkstyle.qss"); + + if (!f.exists()) + printf("Unable to set stylesheet, file not found\n"); + else { + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + qApp->setStyleSheet(ts.readAll()); + } + QPalette palette(qApp->palette()); + palette.setColor(QPalette::Link, Qt::white); + palette.setColor(QPalette::LinkVisited, Qt::lightGray); + qApp->setPalette(palette); + window->resize(window->size()); + + NewDarkMode = TRUE; + } else { + qApp->setStyleSheet(""); + QPalette palette(qApp->palette()); + palette.setColor(QPalette::Link, Qt::blue); + palette.setColor(QPalette::LinkVisited, Qt::magenta); + qApp->setPalette(palette); + window->resize(window->size()); + NewDarkMode = FALSE; + } + window->updateDarkMode(); + + if (NewDarkMode != OldDarkMode) QTimer::singleShot(1000, [this] () { + BOOL DarkMode = NewDarkMode; + DwmSetWindowAttribute((HWND) window->winId(), + DWMWA_USE_IMMERSIVE_DARK_MODE, + (LPCVOID) &DarkMode, + sizeof(DarkMode)); + }); + } + } + } + + return false; +} diff --git a/src/qt/qt_vmmanager_windarkmodefilter.hpp b/src/qt/qt_vmmanager_windarkmodefilter.hpp new file mode 100644 index 000000000..4f6b28a6e --- /dev/null +++ b/src/qt/qt_vmmanager_windarkmodefilter.hpp @@ -0,0 +1,47 @@ +/* + * 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. + * + * Header file for Windows dark mode native messages filter + * + * + * + * Authors: Teemu Korhonen + * + * Copyright 2022 Teemu Korhonen + */ + +#ifndef QT_WINDOWSDARKMODEEVENTFILTER_HPP +#define QT_WINDOWSDARKMODEEVENTFILTER_HPP + +#include +#include +#include +#include +#include + +#include "qt_vmmanager_mainwindow.hpp" + +#if QT_VERSION_MAJOR >= 6 +# define result_t qintptr +#else +# define result_t long +#endif + +class WindowsDarkModeFilter : public QObject, public QAbstractNativeEventFilter { + Q_OBJECT + +public: + WindowsDarkModeFilter() = default; + void setWindow(VMManagerMainWindow *window); + bool nativeEventFilter(const QByteArray &eventType, void *message, result_t *result) override; + +private: + VMManagerMainWindow *window; +}; + +#endif // QT_WINDOWSDARKMODEEVENTFILTER_HPP diff --git a/src/qt/qt_winrawinputfilter.cpp b/src/qt/qt_winrawinputfilter.cpp index eca77d15d..9b7adce1d 100644 --- a/src/qt/qt_winrawinputfilter.cpp +++ b/src/qt/qt_winrawinputfilter.cpp @@ -71,38 +71,11 @@ extern void win_keyboard_handle(uint32_t scancode, int up, int e0, int e1); #include #include "qt_rendererstack.hpp" +#include "qt_util.hpp" #include "ui_qt_mainwindow.h" static bool NewDarkMode = FALSE; -bool windows_is_light_theme() { - // based on https://stackoverflow.com/questions/51334674/how-to-detect-windows-10-light-dark-mode-in-win32-application - - // The value is expected to be a REG_DWORD, which is a signed 32-bit little-endian - auto buffer = std::vector(4); - auto cbData = static_cast(buffer.size() * sizeof(char)); - auto res = RegGetValueW( - HKEY_CURRENT_USER, - L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", - L"AppsUseLightTheme", - RRF_RT_REG_DWORD, // expected value type - nullptr, - buffer.data(), - &cbData); - - if (res != ERROR_SUCCESS) { - return 1; - } - - // convert bytes written to our buffer to an int, assuming little-endian - auto i = int(buffer[3] << 24 | - buffer[2] << 16 | - buffer[1] << 8 | - buffer[0]); - - return i == 1; -} - struct { HANDLE done_event = 0, ready_event = 0; @@ -365,7 +338,7 @@ WindowsRawInputFilter::nativeEventFilter(const QByteArray &eventType, void *mess } #endif - if (!windows_is_light_theme()) { + if (!util::isWindowsLightTheme()) { QFile f(":qdarkstyle/dark/darkstyle.qss"); if (!f.exists()) @@ -375,9 +348,17 @@ WindowsRawInputFilter::nativeEventFilter(const QByteArray &eventType, void *mess QTextStream ts(&f); qApp->setStyleSheet(ts.readAll()); } + QPalette palette(qApp->palette()); + palette.setColor(QPalette::Link, Qt::white); + palette.setColor(QPalette::LinkVisited, Qt::lightGray); + qApp->setPalette(palette); NewDarkMode = TRUE; } else { qApp->setStyleSheet(""); + QPalette palette(qApp->palette()); + palette.setColor(QPalette::Link, Qt::blue); + palette.setColor(QPalette::LinkVisited, Qt::magenta); + qApp->setPalette(palette); NewDarkMode = FALSE; } diff --git a/src/qt/sdl_joystick.c b/src/qt/sdl_joystick.c index 75234bca3..f1ba0380f 100644 --- a/src/qt/sdl_joystick.c +++ b/src/qt/sdl_joystick.c @@ -91,7 +91,7 @@ joystick_close(void) } static int -joystick_get_axis(int gameport, int joystick_nr, int mapping) +joystick_get_axis(int joystick_nr, int mapping) { if (mapping & POV_X) { switch (plat_joystick_state[joystick_nr].p[mapping & 3]) { @@ -128,9 +128,9 @@ joystick_get_axis(int gameport, int joystick_nr, int mapping) } void -joystick_process(void) +joystick_process(uint8_t gp) { - if (!joystick_type) + if (!joystick_type[gp]) return; SDL_JoystickUpdate(); @@ -146,44 +146,44 @@ joystick_process(void) #if 0 pclog("joystick %i - x=%i y=%i b[0]=%i b[1]=%i %i\n", js, - joystick_state[0][js].x, - joystick_state[0][js].y, - joystick_state[0][js].b[0], - joystick_state[0][js].b[1], - joysticks_present); + joystick_state[gp][js].x, + joystick_state[gp][js].y, + joystick_state[gp][js].b[0], + joystick_state[gp][js].b[1], + joysticks_present[gp]); #endif } - for (int js = 0; js < joystick_get_max_joysticks(joystick_type); js++) { - if (joystick_state[0][js].plat_joystick_nr) { - int joystick_nr = joystick_state[0][js].plat_joystick_nr - 1; + for (int js = 0; js < joystick_get_max_joysticks(joystick_type[gp]); js++) { + if (joystick_state[gp][js].plat_joystick_nr) { + int joystick_nr = joystick_state[gp][js].plat_joystick_nr - 1; - for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type); axis_nr++) - joystick_state[0][js].axis[axis_nr] = joystick_get_axis(0, joystick_nr, joystick_state[0][js].axis_mapping[axis_nr]); + for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[gp]); axis_nr++) + joystick_state[gp][js].axis[axis_nr] = joystick_get_axis(joystick_nr, joystick_state[gp][js].axis_mapping[axis_nr]); - for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type); button_nr++) - joystick_state[0][js].button[button_nr] = plat_joystick_state[joystick_nr].b[joystick_state[0][js].button_mapping[button_nr]]; + for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[gp]); button_nr++) + joystick_state[gp][js].button[button_nr] = plat_joystick_state[joystick_nr].b[joystick_state[gp][js].button_mapping[button_nr]]; - for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type); pov_nr++) { - int x = joystick_get_axis(0, joystick_nr, joystick_state[0][js].pov_mapping[pov_nr][0]); - int y = joystick_get_axis(0, joystick_nr, joystick_state[0][js].pov_mapping[pov_nr][1]); + for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[gp]); pov_nr++) { + int x = joystick_get_axis(joystick_nr, joystick_state[gp][js].pov_mapping[pov_nr][0]); + int y = joystick_get_axis(joystick_nr, joystick_state[gp][js].pov_mapping[pov_nr][1]); double angle = (atan2((double) y, (double) x) * 360.0) / (2 * M_PI); double magnitude = sqrt((double) x * (double) x + (double) y * (double) y); if (magnitude < 16384) - joystick_state[0][js].pov[pov_nr] = -1; + joystick_state[gp][js].pov[pov_nr] = -1; else - joystick_state[0][js].pov[pov_nr] = ((int) angle + 90 + 360) % 360; + joystick_state[gp][js].pov[pov_nr] = ((int) angle + 90 + 360) % 360; } } else { - for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type); axis_nr++) - joystick_state[0][js].axis[axis_nr] = 0; + for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[gp]); axis_nr++) + joystick_state[gp][js].axis[axis_nr] = 0; - for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type); button_nr++) - joystick_state[0][js].button[button_nr] = 0; + for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[gp]); button_nr++) + joystick_state[gp][js].button[button_nr] = 0; - for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type); pov_nr++) - joystick_state[0][js].pov[pov_nr] = -1; + for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[gp]); pov_nr++) + joystick_state[gp][js].pov[pov_nr] = -1; } } } diff --git a/src/qt/win_joystick_rawinput.c b/src/qt/win_joystick_rawinput.c index c775b4bb3..24ad87f63 100644 --- a/src/qt/win_joystick_rawinput.c +++ b/src/qt/win_joystick_rawinput.c @@ -454,7 +454,7 @@ win_joystick_handle(PRAWINPUT raw) plat_joystick_state[j].a[axis_nr] = value; #if 0 - joystick_log("%s %-06d ", plat_joystick_state[0][j].axis[axis_nr].name, plat_joystick_state[j].a[axis_nr]); + joystick_log("%s %-06d ", plat_joystick_state[j].axis[axis_nr].name, plat_joystick_state[j].a[axis_nr]); #endif } @@ -476,7 +476,7 @@ win_joystick_handle(PRAWINPUT raw) plat_joystick_state[j].p[pov_nr] = value; #if 0 - joystick_log("%s %-3d ", plat_joystick_state[0][j].pov[pov_nr].name, plat_joystick_state[j].p[pov_nr]); + joystick_log("%s %-3d ", plat_joystick_state[j].pov[pov_nr].name, plat_joystick_state[j].p[pov_nr]); #endif } #if 0 @@ -505,41 +505,41 @@ joystick_get_axis(int joystick_nr, int mapping) } void -joystick_process(void) +joystick_process(uint8_t gp) { - if (joystick_type == JS_TYPE_NONE) + if (joystick_type[gp] == JS_TYPE_NONE) return; - for (int js = 0; js < joystick_get_max_joysticks(joystick_type); js++) { - if (joystick_state[0][js].plat_joystick_nr) { - int joystick_nr = joystick_state[0][js].plat_joystick_nr - 1; + for (int js = 0; js < joystick_get_max_joysticks(joystick_type[gp]); js++) { + if (joystick_state[gp][js].plat_joystick_nr) { + int joystick_nr = joystick_state[gp][js].plat_joystick_nr - 1; - for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type); axis_nr++) - joystick_state[0][js].axis[axis_nr] = joystick_get_axis(joystick_nr, joystick_state[0][js].axis_mapping[axis_nr]); + for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[gp]); axis_nr++) + joystick_state[gp][js].axis[axis_nr] = joystick_get_axis(joystick_nr, joystick_state[gp][js].axis_mapping[axis_nr]); - for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type); button_nr++) - joystick_state[0][js].button[button_nr] = plat_joystick_state[joystick_nr].b[joystick_state[0][js].button_mapping[button_nr]]; + for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[gp]); button_nr++) + joystick_state[gp][js].button[button_nr] = plat_joystick_state[joystick_nr].b[joystick_state[gp][js].button_mapping[button_nr]]; - for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type); pov_nr++) { - int x = joystick_get_axis(joystick_nr, joystick_state[0][js].pov_mapping[pov_nr][0]); - int y = joystick_get_axis(joystick_nr, joystick_state[0][js].pov_mapping[pov_nr][1]); + for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[gp]); pov_nr++) { + int x = joystick_get_axis(joystick_nr, joystick_state[gp][js].pov_mapping[pov_nr][0]); + int y = joystick_get_axis(joystick_nr, joystick_state[gp][js].pov_mapping[pov_nr][1]); double angle = (atan2((double) y, (double) x) * 360.0) / (2 * M_PI); double magnitude = sqrt((double) x * (double) x + (double) y * (double) y); if (magnitude < 16384) - joystick_state[0][js].pov[pov_nr] = -1; + joystick_state[gp][js].pov[pov_nr] = -1; else - joystick_state[0][js].pov[pov_nr] = ((int) angle + 90 + 360) % 360; + joystick_state[gp][js].pov[pov_nr] = ((int) angle + 90 + 360) % 360; } } else { - for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type); axis_nr++) - joystick_state[0][js].axis[axis_nr] = 0; + for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[gp]); axis_nr++) + joystick_state[gp][js].axis[axis_nr] = 0; - for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type); button_nr++) - joystick_state[0][js].button[button_nr] = 0; + for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[gp]); button_nr++) + joystick_state[gp][js].button[button_nr] = 0; - for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type); pov_nr++) - joystick_state[0][js].pov[pov_nr] = -1; + for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[gp]); pov_nr++) + joystick_state[gp][js].pov[pov_nr] = -1; } } } diff --git a/src/qt_resources.qrc b/src/qt_resources.qrc index 01bbc866a..78153d3ff 100644 --- a/src/qt_resources.qrc +++ b/src/qt_resources.qrc @@ -83,6 +83,8 @@ qt/assets/86box-yellow.png qt/assets/86box.png qt/assets/86box-wizard.png + qt/assets/addvm-logo.png + qt/assets/addvm-watermark.png qt/assets/systemicons/cpq_deskpro.png diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index 03dcb59ef..be23a66fe 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -3810,8 +3810,10 @@ scsi_cdrom_get_max(const ide_t *ide, UNUSED(const int ide_has_dma), const int ty static int scsi_cdrom_get_timings(const ide_t *ide, UNUSED(const int ide_has_dma), const int type) { - const scsi_cdrom_t *dev = (scsi_cdrom_t *) ide->sc; - int has_dma = cdrom_has_dma(dev->drv->type); + const scsi_cdrom_t *dev = (scsi_cdrom_t *) ide->sc; + int has_dma = cdrom_has_dma(dev->drv->type); + int pio_cyc_time[5] = { 600, 383, 240, 180, 120 }; + int max_pio = cdrom_get_transfer_max(dev->drv->type, TYPE_PIO); int ret; switch (type) { @@ -3819,10 +3821,20 @@ scsi_cdrom_get_timings(const ide_t *ide, UNUSED(const int ide_has_dma), const in ret = has_dma ? 120 : 0; break; case TIMINGS_PIO: - ret = has_dma ? 120 : 0; + if (max_pio <= 0) + ret = 600; + else if (max_pio == 1) + ret = 383; + else + ret = 240; break; case TIMINGS_PIO_FC: - ret = 0; + if (max_pio > 4) + ret = 120; + else if (max_pio < 0) + ret = 600; + else + ret = pio_cyc_time[max_pio]; break; default: ret = 0; diff --git a/src/sio/CMakeLists.txt b/src/sio/CMakeLists.txt index c6e90d320..b2ca643cf 100644 --- a/src/sio/CMakeLists.txt +++ b/src/sio/CMakeLists.txt @@ -17,8 +17,10 @@ add_library(sio OBJECT sio_82091aa.c + sio_90c50.c sio_acc3221.c sio_ali5123.c + sio_cbm_io.c sio_gm82c803ab.c sio_gm82c803c.c sio_f82c606.c diff --git a/src/sio/sio_90c50.c b/src/sio/sio_90c50.c new file mode 100644 index 000000000..5e7f19b6f --- /dev/null +++ b/src/sio/sio_90c50.c @@ -0,0 +1,266 @@ +/* + * 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. + * + * Emulation of the Dataworld 90C50 (COMBAT) Super I/O chip. + * + * Authors: Miran Grca, + * + * Copyright 2020-2025 Miran Grca. + */ +#include +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include <86box/io.h> +#include <86box/timer.h> +#include <86box/device.h> +#include <86box/lpt.h> +#include <86box/mem.h> +#include <86box/nvr.h> +#include <86box/pci.h> +#include <86box/rom.h> +#include <86box/serial.h> +#include <86box/hdc.h> +#include <86box/hdc_ide.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/sio.h> +#include <86box/plat_unused.h> + +#ifdef ENABLE_90C50_LOG +int dw90c50_do_log = ENABLE_90C50_LOG; + +static void +dw90c50_log(const char *fmt, ...) +{ + va_list ap; + + if (dw90c50_do_log) { + va_start(ap, fmt); + pclog_ex(fmt, ap); + va_end(ap); + } +} +#else +# define dw90c50_log(fmt, ...) +#endif + +typedef struct dw90c50_t { + uint8_t flags; + uint8_t reg; + fdc_t *fdc; + serial_t *uart[2]; + lpt_t *lpt; +} dw90c50_t; + +static void +lpt_handler(dw90c50_t *dev) +{ + int temp; + uint16_t lpt_port = LPT1_ADDR; + uint8_t lpt_irq = LPT1_IRQ; + + /* bits 0-1: + * 00 378h + * 01 3bch + * 10 278h + * 11 disabled + */ + temp = (dev->reg & 0x06) >> 1; + + lpt_port_remove(dev->lpt); + + switch (temp) { + case 0x00: + lpt_port = 0x000; + lpt_irq = 0xff; + break; + case 0x01: + lpt_port = LPT_MDA_ADDR; + break; + case 0x02: + lpt_port = LPT1_ADDR; + break; + case 0x03: + lpt_port = LPT2_ADDR; + break; + + default: + break; + } + + if (lpt_port) + lpt_port_setup(dev->lpt, lpt_port); + + lpt_port_irq(dev->lpt, lpt_irq); +} + +static void +serial_handler(dw90c50_t *dev) +{ + uint16_t base1 = 0x0000, base2 = 0x0000; + uint8_t irq1, irq2; + + serial_remove(dev->uart[0]); + serial_remove(dev->uart[1]); + + switch ((dev->reg >> 3) & 0x07) { + case 0x0001: + base1 = 0x03f8; + break; + case 0x0002: + base2 = 0x02f8; + break; + case 0x0003: + base1 = 0x03f8; + base2 = 0x02f8; + break; + case 0x0004: + base1 = 0x03e8; + base2 = 0x02e8; + break; + case 0x0006: + base2 = 0x03f8; + break; + case 0x0007: + base1 = 0x02f8; + base2 = 0x03f8; + break; + } + + irq1 = (base1 & 0x0100) ? COM1_IRQ : COM2_IRQ; + irq2 = (base2 & 0x0100) ? COM1_IRQ : COM2_IRQ; + + if (base1 != 0x0000) + serial_setup(dev->uart[0], base1, irq1); + + if (base2 != 0x0000) + serial_setup(dev->uart[0], base2, irq2); +} + +static void +dw90c50_write(UNUSED(uint16_t port), uint8_t val, void *priv) +{ + dw90c50_t *dev = (dw90c50_t *) priv; + uint8_t valxor; + + dw90c50_log("[%04X:%08X] [W] %02X = %02X (%i)\n", CS, cpu_state.pc, port, val, dev->tries); + + /* Second write to config register. */ + valxor = val ^ dev->reg; + dev->reg = val; + + dw90c50_log("SIO: Register written %02X\n", val); + + /* Reconfigure floppy disk controller. */ + if (valxor & 0x01) { + dw90c50_log("SIO: FDC disabled\n"); + fdc_remove(dev->fdc); + /* Bit 0: 1 = Enable FDC. */ + if (val & 0x01) { + dw90c50_log("SIO: FDC enabled\n"); + fdc_set_base(dev->fdc, FDC_PRIMARY_ADDR); + } + } + + /* Reconfigure parallel port. */ + if (valxor & 0x06) + lpt_handler(dev); + + /* Reconfigure serial ports. */ + if (valxor & 0x38) + serial_handler(dev); + + /* Reconfigure IDE controller. */ + if ((dev->flags & PCX73XX_IDE) && (valxor & 0x40)) { + dw90c50_log("SIO: HDC disabled\n"); + ide_pri_disable(); + /* Bit 6: 1 = Enable IDE controller. */ + if (val & 0x40) { + dw90c50_log("SIO: HDC enabled\n"); + ide_set_base(0, 0x1f0); + ide_set_side(0, 0x3f6); + ide_pri_enable(); + } + } +} + +uint8_t +dw90c50_read(UNUSED(uint16_t port), void *priv) +{ + dw90c50_t *dev = (dw90c50_t *) priv; + uint8_t ret = 0xff; + + ret = dev->reg; + + dw90c50_log("[%04X:%08X] [R] %02X = %02X\n", CS, cpu_state.pc, port, ret); + + return ret; +} + +void +dw90c50_reset(dw90c50_t *dev) +{ + fdc_reset(dev->fdc); + + dev->reg = 0x62; + dw90c50_write(0x03f3, 0x9d, dev); +} + +static void +dw90c50_close(void *priv) +{ + dw90c50_t *dev = (dw90c50_t *) priv; + + free(dev); +} + +static void * +dw90c50_init(const device_t *info) +{ + dw90c50_t *dev = (dw90c50_t *) calloc(1, sizeof(dw90c50_t)); + + /* Avoid conflicting with machines that make no use of the 90C50 Internal IDE */ + dev->flags = info->local; + + dev->fdc = device_add(&fdc_at_nsc_device); + + dev->uart[0] = device_add_inst(&ns16450_device, 1); + dev->uart[1] = device_add_inst(&ns16450_device, 2); + + dev->lpt = device_add_inst(&lpt_port_device, 1); + lpt_set_ext(dev->lpt, 1); + + if (dev->flags & DW90C50_IDE) + device_add(&ide_isa_device); + + dw90c50_reset(dev); + + io_sethandler(0x03f3, 0x0001, + dw90c50_read, NULL, NULL, dw90c50_write, NULL, NULL, dev); + + return dev; +} + +const device_t dw90c50_device = { + .name = "National Semiconductor 90C50 Super I/O", + .internal_name = "90c50", + .flags = 0, + .local = 0, + .init = dw90c50_init, + .close = dw90c50_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; diff --git a/src/sio/sio_ali5123.c b/src/sio/sio_ali5123.c index a6cd12554..5dad42252 100644 --- a/src/sio/sio_ali5123.c +++ b/src/sio/sio_ali5123.c @@ -530,7 +530,7 @@ ali5123_init(const device_t *info) io_sethandler(FDC_PRIMARY_ADDR, 0x0002, ali5123_read, NULL, NULL, ali5123_write, NULL, NULL, dev); - device_add(&kbc_ps2_ali_pci_device); + device_add_params(&kbc_at_device, (void *) KBC_VEN_ALI); return dev; } diff --git a/src/sio/sio_cbm_io.c b/src/sio/sio_cbm_io.c new file mode 100644 index 000000000..477c30a44 --- /dev/null +++ b/src/sio/sio_cbm_io.c @@ -0,0 +1,112 @@ +/* + * 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 the ACC 3221-SP Super I/O Chip. + * + * + * + * Authors: Sarah Walker, + * + * Copyright 2019 Sarah Walker. + */ +#include +#include +#include +#include +#include +#include <86box/86box.h> +#include <86box/io.h> +#include <86box/timer.h> +#include <86box/device.h> +#include <86box/pci.h> +#include <86box/lpt.h> +#include <86box/serial.h> +#include <86box/hdc.h> +#include <86box/hdc_ide.h> +#include <86box/fdd.h> +#include <86box/fdc.h> +#include <86box/sio.h> +#include <86box/plat_unused.h> + +typedef struct cbm_io_t { + serial_t *uart; + lpt_t *lpt; +} cbm_io_t; + +static void +cbm_io_write(UNUSED(uint16_t port), uint8_t val, void *priv) +{ + cbm_io_t *dev = (cbm_io_t *) priv; + + lpt_port_remove(dev->lpt); + + switch (val & 0x03) { + case 0x01: + lpt_port_setup(dev->lpt, LPT_MDA_ADDR); + break; + case 0x02: + lpt_port_setup(dev->lpt, LPT1_ADDR); + break; + case 0x03: + lpt_port_setup(dev->lpt, LPT2_ADDR); + break; + + default: + break; + } + + switch (val & 0x0c) { + case 0x04: + serial_setup(dev->uart, COM2_ADDR, COM2_IRQ); + break; + case 0x08: + serial_setup(dev->uart, COM1_ADDR, COM1_IRQ); + break; + + default: + break; + } +} + +static void +cbm_io_close(void *priv) +{ + cbm_io_t *dev = (cbm_io_t *) priv; + + free(dev); +} + +static void * +cbm_io_init(UNUSED(const device_t *info)) +{ + cbm_io_t *dev = (cbm_io_t *) calloc(1, sizeof(cbm_io_t)); + + dev->uart = device_add_inst(&ns16450_device, 1); + + dev->lpt = device_add_inst(&lpt_port_device, 1); + + io_sethandler(0x0230, 0x0001, + NULL, NULL, NULL, cbm_io_write, NULL, NULL, + dev); + + return dev; +} + +const device_t cbm_io_device = { + .name = "Commodore CBM I/O", + .internal_name = "cbm_io", + .flags = 0, + .local = 0, + .init = cbm_io_init, + .close = cbm_io_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; diff --git a/src/sio/sio_f82c710.c b/src/sio/sio_f82c710.c index 0e9cb0d9b..f7ff1409f 100644 --- a/src/sio/sio_f82c710.c +++ b/src/sio/sio_f82c710.c @@ -357,7 +357,7 @@ f82c710_init(const device_t *info) dev->uart = device_add_inst(&ns16450_device, 1); dev->lpt = device_add_inst(&lpt_port_device, 1); - dev->mouse = device_add_params(&mouse_upc_device, (void *) (uintptr_t) (is8086 ? 2 : 12)); + dev->mouse = device_add_params(&mouse_upc_device, (void *) (uintptr_t) (is286 ? 12 : 2)); dev->serial_irq = device_get_config_int("serial_irq"); dev->lpt_irq = device_get_config_int("lpt_irq"); diff --git a/src/sio/sio_fdc37c67x.c b/src/sio/sio_fdc37c67x.c index 9b9e40903..943b78b21 100644 --- a/src/sio/sio_fdc37c67x.c +++ b/src/sio/sio_fdc37c67x.c @@ -764,20 +764,20 @@ fdc37c67x_init(const device_t *info) switch (dev->kbc_type) { case FDC37XXX1: - dev->kbc = device_add(&kbc_ps2_compaq_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) KBC_VEN_COMPAQ); break; case FDC37XXX2: - dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00003500)); break; case FDC37XXX3: default: - dev->kbc = device_add(&kbc_ps2_pci_device); + dev->kbc = device_add(&kbc_at_device); break; case FDC37XXX5: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00013800)); break; case FDC37XXX7: - dev->kbc = device_add(&kbc_ps2_phoenix_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041600)); break; } diff --git a/src/sio/sio_fdc37c93x.c b/src/sio/sio_fdc37c93x.c index d5cd72c67..47e73ebae 100644 --- a/src/sio/sio_fdc37c93x.c +++ b/src/sio/sio_fdc37c93x.c @@ -1919,20 +1919,20 @@ fdc37c93x_init(const device_t *info) switch (dev->kbc_type) { case FDC37XXX1: - dev->kbc = device_add(&kbc_ps2_compaq_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) KBC_VEN_COMPAQ); break; case FDC37XXX2: - dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00003500)); break; case FDC37XXX3: default: - dev->kbc = device_add(&kbc_ps2_pci_device); + dev->kbc = device_add(&kbc_at_device); break; case FDC37XXX5: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00013800)); break; case FDC37XXX7: - dev->kbc = device_add(&kbc_ps2_phoenix_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041600)); break; } diff --git a/src/sio/sio_fdc37m60x.c b/src/sio/sio_fdc37m60x.c index 1ffa0f16d..e6470a6ea 100644 --- a/src/sio/sio_fdc37m60x.c +++ b/src/sio/sio_fdc37m60x.c @@ -655,20 +655,20 @@ fdc37m60x_init(const device_t *info) switch (dev->kbc_type) { case FDC37XXX1: - dev->kbc = device_add(&kbc_ps2_compaq_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) KBC_VEN_COMPAQ); break; case FDC37XXX2: - dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00003500)); break; case FDC37XXX3: default: - dev->kbc = device_add(&kbc_ps2_pci_device); + dev->kbc = device_add(&kbc_at_device); break; case FDC37XXX5: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00013800)); break; case FDC37XXX7: - dev->kbc = device_add(&kbc_ps2_phoenix_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041600)); break; } diff --git a/src/sio/sio_it86x1f.c b/src/sio/sio_it86x1f.c index 4c97f481a..324914355 100644 --- a/src/sio/sio_it86x1f.c +++ b/src/sio/sio_it86x1f.c @@ -32,6 +32,7 @@ #include <86box/fdd.h> #include <86box/fdc.h> #include <86box/gameport.h> +#include <86box/keyboard.h> #include <86box/sio.h> #include <86box/isapnp.h> #include <86box/plat_fallthrough.h> @@ -854,6 +855,9 @@ it86x1f_init(UNUSED(const device_t *info)) dev->unlock_id = it86x1f_models[i].unlock_id; io_sethandler(0x279, 1, NULL, NULL, NULL, it86x1f_write_unlock, NULL, NULL, dev); + if (info->local == ITE_IT8671F) + device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00004800)); + it86x1f_reset(dev); return dev; diff --git a/src/sio/sio_pc87306.c b/src/sio/sio_pc87306.c index 6401a5dd1..e95292fbb 100644 --- a/src/sio/sio_pc87306.c +++ b/src/sio/sio_pc87306.c @@ -348,7 +348,7 @@ pc87306_write(uint16_t port, uint8_t val, void *priv) fdc_set_base(dev->fdc, (dev->regs[0x00] & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } } - if (valxor & 0x08) { + if (valxor & 0x88) { lpt_port_remove(dev->lpt); if ((dev->regs[0x00] & 1) && !(dev->regs[0x02] & 1)) lpt_handler(dev); @@ -537,13 +537,13 @@ pc87306_init(UNUSED(const device_t *info)) switch (dev->kbc_type) { case PCX730X_AMI: default: - dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00003500)); break; case PCX730X_PHOENIX_42: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00013700)); break; case PCX730X_PHOENIX_42I: - dev->kbc = device_add(&kbc_ps2_phoenix_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041600)); break; } diff --git a/src/sio/sio_pc87307.c b/src/sio/sio_pc87307.c index 48c2aeb27..44db6ee9d 100644 --- a/src/sio/sio_pc87307.c +++ b/src/sio/sio_pc87307.c @@ -902,16 +902,16 @@ pc87307_init(const device_t *info) lpt_set_cnfga_readout(dev->lpt, 0x14); switch (info->local & PCX730X_KBC) { - default: case PCX730X_AMI: - dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device); + default: + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00003500)); break; /* Optiplex! */ case PCX730X_PHOENIX_42: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00013700)); break; case PCX730X_PHOENIX_42I: - dev->kbc = device_add(&kbc_ps2_phoenix_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041600)); break; } diff --git a/src/sio/sio_pc87309.c b/src/sio/sio_pc87309.c index a6e4a5fa3..415bbbdc4 100644 --- a/src/sio/sio_pc87309.c +++ b/src/sio/sio_pc87309.c @@ -737,16 +737,16 @@ pc87309_init(const device_t *info) lpt_set_cnfga_readout(dev->lpt, 0x14); switch (info->local & PCX730X_KBC) { - default: case PCX730X_AMI: - dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device); + default: + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00003500)); break; /* Optiplex! */ case PCX730X_PHOENIX_42: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00013700)); break; case PCX730X_PHOENIX_42I: - dev->kbc = device_add(&kbc_ps2_phoenix_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041600)); break; } diff --git a/src/sio/sio_w837x7.c b/src/sio/sio_w837x7.c index c1ff935ec..3b5924b27 100644 --- a/src/sio/sio_w837x7.c +++ b/src/sio/sio_w837x7.c @@ -233,8 +233,8 @@ w837x7_ide_handler(w837x7_t *dev) ide_handlers(ide_id, 0); - ide_set_base_addr(ide_id, 0, (dev->regs[0x00] & 0x40) ? 0x0170 : 0x01f0); - ide_set_base_addr(ide_id, 1, (dev->regs[0x00] & 0x40) ? 0x0376 : 0x03f6); + ide_set_base_addr(ide_id, 0, (dev->regs[0x00] & 0x40) ? 0x01f0 : 0x0170); + ide_set_base_addr(ide_id, 1, (dev->regs[0x00] & 0x40) ? 0x03f6 : 0x0376); if (!(dev->regs[0x00] & 0x80)) ide_handlers(ide_id, 1); diff --git a/src/sio/sio_w83877.c b/src/sio/sio_w83877.c index 6ca0a019b..32e7a4bc8 100644 --- a/src/sio/sio_w83877.c +++ b/src/sio/sio_w83877.c @@ -408,6 +408,8 @@ w83877_write(uint16_t port, uint8_t val, void *priv) case 0x26: if (valxor & 0x0f) w83877_lpt_handler(dev); + if (valxor & 0xf0) + w83877_fdc_handler(dev); break; case 0x27: if (valxor & 0xef) @@ -460,14 +462,25 @@ w83877_reset(w83877_t *dev) { fdc_reset(dev->fdc); - memset(dev->regs, 0, 0x2A); + memset(dev->regs, 0, 256); dev->regs[0x03] = 0x30; - dev->regs[0x07] = 0xF5; + dev->regs[0x07] = 0xf5; dev->regs[0x09] = (dev->reg_init >> 8) & 0xff; - dev->regs[0x0a] = 0x1F; + dev->regs[0x0a] = 0x1f; dev->regs[0x0c] = 0x28; - dev->regs[0x0d] = 0xA3; - dev->regs[0x16] = dev->reg_init & 0xff; + dev->regs[0x0d] = 0xa3; + dev->regs[0x16] = (dev->reg_init & 0xff) | 0x02; + dev->regs[0x1e] = 0x81; + dev->regs[0x20] = 0xfc; + dev->regs[0x21] = 0x7c; + dev->regs[0x22] = 0xfd; + dev->regs[0x23] = 0xde; + dev->regs[0x24] = 0xfe; + dev->regs[0x25] = 0xbe; + dev->regs[0x26] = 0x23; + dev->regs[0x27] = 0x65; + dev->regs[0x28] = 0x43; + dev->regs[0x29] = 0x62; w83877_fdc_handler(dev); fdc_clear_flags(dev->fdc, FDC_FLAG_PS2 | FDC_FLAG_PS2_MCA); diff --git a/src/sio/sio_w83977.c b/src/sio/sio_w83977.c index 0ac531c9b..a14e50942 100644 --- a/src/sio/sio_w83977.c +++ b/src/sio/sio_w83977.c @@ -1294,10 +1294,10 @@ w83977_init(const device_t *info) switch (dev->kbc_type) { case W83977_AMI: - dev->kbc = device_add(&kbc_ps2_ami_pci_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_AMI | 0x00004800)); break; case W83977_PHOENIX: - dev->kbc = device_add(&kbc_ps2_phoenix_device); + dev->kbc = device_add_params(&kbc_at_device, (void *) (KBC_VEN_PHOENIX | 0x00041900)); break; } diff --git a/src/unix/assets/86Box.spec b/src/unix/assets/86Box.spec index bb9b85b12..000fb07c3 100644 --- a/src/unix/assets/86Box.spec +++ b/src/unix/assets/86Box.spec @@ -15,7 +15,7 @@ %global romver 4.1 Name: 86Box -Version: 5.0 +Version: 5.0.1 Release: 1%{?dist} Summary: Classic PC emulator License: GPLv2+ @@ -121,5 +121,5 @@ popd %{_datadir}/%{name}/roms %changelog -* Sat Aug 31 Jasmine Iwanek 5.0-1 +* Sat Aug 31 Jasmine Iwanek 5.0.1-1 - Bump release diff --git a/src/unix/assets/net.86box.86Box.metainfo.xml b/src/unix/assets/net.86box.86Box.metainfo.xml index 4c6a795a7..49d5a87d9 100644 --- a/src/unix/assets/net.86box.86Box.metainfo.xml +++ b/src/unix/assets/net.86box.86Box.metainfo.xml @@ -11,7 +11,7 @@ net.86box.86Box.desktop - + diff --git a/src/unix/unix.c b/src/unix/unix.c index 551bde26b..b4d6daa17 100644 --- a/src/unix/unix.c +++ b/src/unix/unix.c @@ -875,19 +875,21 @@ plat_init_rom_paths(void) void plat_get_global_config_dir(char *outbuf, const size_t len) { - char *prefPath = SDL_GetPrefPath(NULL, "86Box"); - strncpy(outbuf, prefPath, len); - path_slash(outbuf); - SDL_free(prefPath); + return plat_get_global_data_dir(outbuf, len); } void plat_get_global_data_dir(char *outbuf, const size_t len) { - char *prefPath = SDL_GetPrefPath(NULL, "86Box"); - strncpy(outbuf, prefPath, len); + if (portable_mode) { + strncpy(outbuf, exe_path, len); + } else { + char *prefPath = SDL_GetPrefPath(NULL, "86Box"); + strncpy(outbuf, prefPath, len); + SDL_free(prefPath); + } + path_slash(outbuf); - SDL_free(prefPath); } void @@ -901,6 +903,14 @@ plat_get_temp_dir(char *outbuf, uint8_t len) path_slash(outbuf); } +void +plat_get_vmm_dir(char *outbuf, const size_t len) +{ + // Return empty string. SDL 86Box does not have a VM manager + if (len > 0) + outbuf[0] = 0; +} + bool process_media_commands_3(uint8_t *id, char *fn, uint8_t *wp, int cmdargc) { @@ -1228,11 +1238,12 @@ main(int argc, char **argv) ret = pc_init(argc, argv); if (ret == 0) return 0; - if (!pc_init_modules()) { + if (!pc_init_roms()) { ui_msgbox_header(MBX_FATAL, L"No ROMs found.", L"86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory."); SDL_Quit(); return 6; } + pc_init_modules(); for (uint8_t i = 1; i < GFXCARD_MAX; i++) gfxcard[i] = 0; @@ -1475,7 +1486,7 @@ joystick_close(void) } void -joystick_process(void) +joystick_process(uint8_t gp) { /* No-op. */ } diff --git a/src/video/CMakeLists.txt b/src/video/CMakeLists.txt index ef5cbbb38..4e490094c 100644 --- a/src/video/CMakeLists.txt +++ b/src/video/CMakeLists.txt @@ -58,6 +58,7 @@ add_library(vid OBJECT vid_cga_quadcolor.c vid_cga_toshiba_t1000.c vid_cga_toshiba_t3100e.c + vid_cga_v6355.c # PCJr/Tandy vid_pcjr.c diff --git a/src/video/clockgen/vid_clockgen_ics2494.c b/src/video/clockgen/vid_clockgen_ics2494.c index 350a490cc..33a74fe62 100644 --- a/src/video/clockgen/vid_clockgen_ics2494.c +++ b/src/video/clockgen/vid_clockgen_ics2494.c @@ -48,6 +48,120 @@ ics2494_log(const char *fmt, ...) # define ics2494_log(fmt, ...) #endif +/* Two consecutive byte-writes are NOT allowed. Furthermore an index + * written to 0x01CE is only usable ONCE! Note also that the setting of ATI + * extended registers (especially those with clock selection bits) should be + * bracketed by a sequencer reset. + * + * Boards prior to V5 use 4 crystals. Boards V5 and later use a clock + * generator chip. V3 and V4 boards differ when it comes to choosing clock + * frequencies. + * + * VGA Wonder V3/V4 Board Clock Frequencies + * R E G I S T E R S + * 1CE(*) 3C2 3C2 Frequency + * B2h/BEh + * Bit 6/4 Bit 3 Bit 2 (MHz) + * ------- ------- ------- ------- + * 0 0 0 50.175 + * 0 0 1 56.644 + * 0 1 0 Spare 1 + * 0 1 1 44.900 + * 1 0 0 44.900 + * 1 0 1 50.175 + * 1 1 0 Spare 2 + * 1 1 1 36.000 + * + * (*): V3 uses index B2h, bit 6; V4 uses index BEh, bit 4 + * + * V5, PLUS, XL and XL24 usually have an ATI 18810 clock generator chip, but + * some have an ATI 18811-0, and it's quite conceivable that some exist with + * ATI 18811-1's or ATI 18811-2's. Mach32 boards are known to use any one of + * these clock generators. The possibilities for Mach64 boards also include + * two different flavours of the newer 18818 chips. I have yet to figure out + * how BIOS initialization sets up the board for a particular set of + * frequencies. Mach32 and Mach64 boards also use a different dot clock + * ordering. ATI says there is no reliable way for the driver to determine + * which clock generator is on the board (their BIOS's are tailored to the + * board). + * + * VGA Wonder V5/PLUS/XL/XL24 Board Clock Frequencies + * R E G I S T E R S + * 1CE 1CE 3C2 3C2 Frequency + * B9h BEh (MHz) 18811-0 18811-1 + * Bit 1 Bit 4 Bit 3 Bit 2 18810 18812-0 18811-2 18818-? 18818-? + * ------- ------- ------- ------- ------- ------- ------- ------- ------- + * 0 0 0 0 30.240 30.240 135.000 (*3) (*3) + * 0 0 0 1 32.000 32.000 32.000 110.000 110.000 + * 0 0 1 0 37.500 110.000 110.000 126.000 126.000 + * 0 0 1 1 39.000 80.000 80.000 135.000 135.000 + * 0 1 0 0 42.954 42.954 100.000 50.350 25.175 + * 0 1 0 1 48.771 48.771 126.000 56.644 28.322 + * 0 1 1 0 (*1) 92.400 92.400 63.000 31.500 + * 0 1 1 1 36.000 36.000 36.000 72.000 36.000 + * 1 0 0 0 40.000 39.910 39.910 (*3) (*3) + * 1 0 0 1 56.644 44.900 44.900 80.000 80.000 + * 1 0 1 0 75.000 75.000 75.000 75.000 75.000 + * 1 0 1 1 65.000 65.000 65.000 65.000 65.000 + * 1 1 0 0 50.350 50.350 50.350 40.000 40.000 + * 1 1 0 1 56.640 56.640 56.640 44.900 44.900 + * 1 1 1 0 (*2) (*3) (*3) 49.500 49.500 + * 1 1 1 1 44.900 44.900 44.900 50.000 50.000 + * + * (*1) External 0 (supposedly 16.657 Mhz) + * (*2) External 1 (supposedly 28.322 MHz) + * (*3) This setting doesn't seem to generate anything + * + * Mach32 and Mach64 Board Clock Frequencies + * R E G I S T E R S + * 1CE 1CE 3C2 3C2 Frequency + * B9h BEh (MHz) 18811-0 18811-1 + * Bit 1 Bit 4 Bit 3 Bit 2 18810 18812-0 18811-2 18818-? 18818-? + * ------- ------- ------- ------- ------- ------- ------- ------- ------- + * 0 0 0 0 42.954 42.954 100.000 50.350 25.175 + * 0 0 0 1 48.771 48.771 126.000 56.644 28.322 + * 0 0 1 0 (*1) 92.400 92.400 63.000 31.500 + * 0 0 1 1 36.000 36.000 36.000 72.000 36.000 + * 0 1 0 0 30.240 30.240 135.000 (*3) (*3) + * 0 1 0 1 32.000 32.000 32.000 110.000 110.000 + * 0 1 1 0 37.500 110.000 110.000 126.000 126.000 + * 0 1 1 1 39.000 80.000 80.000 135.000 135.000 + * 1 0 0 0 50.350 50.350 50.350 40.000 40.000 + * 1 0 0 1 56.640 56.640 56.640 44.900 44.900 + * 1 0 1 0 (*2) (*3) (*3) 49.500 49.500 + * 1 0 1 1 44.900 44.900 44.900 50.000 50.000 + * 1 1 0 0 40.000 39.910 39.910 (*3) (*3) + * 1 1 0 1 56.644 44.900 44.900 80.000 80.000 + * 1 1 1 0 75.000 75.000 75.000 75.000 75.000 + * 1 1 1 1 65.000 65.000 65.000 65.000 65.000 + * + * (*1) External 0 (supposedly 16.657 Mhz) + * (*2) External 1 (supposedly 28.322 MHz) + * (*3) This setting doesn't seem to generate anything + * + * Note that, to reduce confusion, this driver masks out the different clock + * ordering. + * + * For all boards, these frequencies can be divided by 1, 2, 3 or 4. + * + * Register 1CE, index B8h + * Bit 7 Bit 6 + * ------- ------- + * 0 0 Divide by 1 + * 0 1 Divide by 2 + * 1 0 Divide by 3 + * 1 1 Divide by 4 + * + * There is some question as to whether or not bit 1 of index 0xB9 can + * be used for clock selection on a V4 board. This driver makes it + * available only if the "undocumented_clocks" option (itself + * undocumented :-)) is specified in XF86Config. + * + * Also it appears that bit 0 of index 0xB9 can also be used for clock + * selection on some boards. It is also only available under XF86Config + * option "undocumented_clocks". + */ + float ics2494_getclock(int clock, void *priv) { @@ -56,7 +170,6 @@ ics2494_getclock(int clock, void *priv) if (clock > 15) clock = 15; - ics2494_log("Clock=%d, freq=%f.\n", clock, ics2494->freq[clock]); return ics2494->freq[clock]; } @@ -67,62 +180,116 @@ ics2494_init(const device_t *info) memset(ics2494, 0, sizeof(ics2494_t)); switch (info->local) { - case 10: + case 0: /* ATI 18810 for ATI 28800 */ - ics2494->freq[0x0] = 42954000.0; - ics2494->freq[0x1] = 48771000.0; - ics2494->freq[0x2] = 0.0; - ics2494->freq[0x3] = 36000000.0; - ics2494->freq[0x4] = 50350000.0; - ics2494->freq[0x5] = 56640000.0; - ics2494->freq[0x6] = 0.0; - ics2494->freq[0x7] = 44900000.0; - ics2494->freq[0x8] = 30240000.0; - ics2494->freq[0x9] = 32000000.0; - ics2494->freq[0xa] = 37500000.0; - ics2494->freq[0xb] = 39000000.0; - ics2494->freq[0xc] = 40000000.0; - ics2494->freq[0xd] = 56644000.0; - ics2494->freq[0xe] = 75000000.0; - ics2494->freq[0xf] = 65000000.0; + ics2494->freq[0] = 30240000.0; + ics2494->freq[1] = 32000000.0; + ics2494->freq[2] = 37500000.0; + ics2494->freq[3] = 39000000.0; + ics2494->freq[4] = 42954000.0; + ics2494->freq[5] = 48771000.0; + ics2494->freq[6] = 0.0; + ics2494->freq[7] = 36000000.0; + ics2494->freq[8] = 40000000.0; + ics2494->freq[9] = 56644000.0; + ics2494->freq[10] = 75000000.0; + ics2494->freq[11] = 65000000.0; + ics2494->freq[12] = 50350000.0; + ics2494->freq[13] = 56640000.0; + ics2494->freq[14] = 0.0; + ics2494->freq[15] = 44900000.0; break; - case 110: - /* ATI 18811-0 for ATI Mach32 */ - ics2494->freq[0x0] = 42954000.0; - ics2494->freq[0x1] = 48771000.0; - ics2494->freq[0x2] = 92400000.0; - ics2494->freq[0x3] = 36000000.0; - ics2494->freq[0x4] = 50350000.0; - ics2494->freq[0x5] = 56640000.0; - ics2494->freq[0x6] = 0.0; - ics2494->freq[0x7] = 44900000.0; - ics2494->freq[0x8] = 30240000.0; - ics2494->freq[0x9] = 32000000.0; - ics2494->freq[0xa] = 110000000.0; - ics2494->freq[0xb] = 80000000.0; - ics2494->freq[0xc] = 39910000.0; - ics2494->freq[0xd] = 44900000.0; - ics2494->freq[0xe] = 75000000.0; - ics2494->freq[0xf] = 65000000.0; + case 1: + /* ATI 18811-0/ATI 18812-0 for ATI 28800 */ + ics2494->freq[0] = 42950000.0; + ics2494->freq[1] = 48770000.0; + ics2494->freq[2] = 92400000.0; + ics2494->freq[3] = 36000000.0; + ics2494->freq[4] = 50350000.0; + ics2494->freq[5] = 56640000.0; + ics2494->freq[7] = 44900000.0; + ics2494->freq[8] = 30240000.0; + ics2494->freq[9] = 32000000.0; + ics2494->freq[10] = 110000000.0; + ics2494->freq[11] = 80000000.0; + ics2494->freq[12] = 39910000.0; + ics2494->freq[13] = 44900000.0; + ics2494->freq[14] = 75000000.0; + ics2494->freq[15] = 65000000.0; break; - case 111: - /* ATI 18811-1 for ATI Mach32 MCA */ - ics2494->freq[0x0] = 100000000.0; - ics2494->freq[0x1] = 126000000.0; - ics2494->freq[0x2] = 92400000.0; - ics2494->freq[0x3] = 36000000.0; - ics2494->freq[0x4] = 50350000.0; - ics2494->freq[0x5] = 56640000.0; - ics2494->freq[0x6] = 0.0; - ics2494->freq[0x7] = 44900000.0; - ics2494->freq[0x8] = 135000000.0; - ics2494->freq[0x9] = 32000000.0; - ics2494->freq[0xa] = 110000000.0; - ics2494->freq[0xb] = 80000000.0; - ics2494->freq[0xc] = 39910000.0; - ics2494->freq[0xd] = 44900000.0; - ics2494->freq[0xe] = 75000000.0; - ics2494->freq[0xf] = 65000000.0; + case 2: + /* ATI 18811-1/ATI 18811-2 for ATI 28800 */ + ics2494->freq[0] = 100000000.0; + ics2494->freq[1] = 126000000.0; + ics2494->freq[2] = 92400000.0; + ics2494->freq[3] = 36000000.0; + ics2494->freq[4] = 50350000.0; + ics2494->freq[5] = 56640000.0; + ics2494->freq[7] = 44900000.0; + ics2494->freq[8] = 135000000.0; + ics2494->freq[9] = 32000000.0; + ics2494->freq[10] = 110000000.0; + ics2494->freq[11] = 80000000.0; + ics2494->freq[12] = 39910000.0; + ics2494->freq[13] = 44900000.0; + ics2494->freq[14] = 75000000.0; + ics2494->freq[15] = 65000000.0; + break; + case 100: + /* ATI 18810 for ATI Mach32 */ + ics2494->freq[0] = 42954000.0; + ics2494->freq[1] = 48771000.0; + ics2494->freq[2] = 0.0; + ics2494->freq[3] = 36000000.0; + ics2494->freq[4] = 30240000.0; + ics2494->freq[5] = 32000000.0; + ics2494->freq[6] = 37500000.0; + ics2494->freq[7] = 39000000.0; + ics2494->freq[8] = 50350000.0; + ics2494->freq[9] = 56640000.0; + ics2494->freq[10] = 0.0; + ics2494->freq[11] = 44900000.0; + ics2494->freq[12] = 40000000.0; + ics2494->freq[13] = 56644000.0; + ics2494->freq[14] = 75000000.0; + ics2494->freq[15] = 65000000.0; + break; + case 101: + /* ATI 18811-0/ATI 18812-0 for ATI Mach32 */ + ics2494->freq[0] = 42954000.0; + ics2494->freq[1] = 48771000.0; + ics2494->freq[2] = 92400000.0; + ics2494->freq[3] = 36000000.0; + ics2494->freq[4] = 30240000.0; + ics2494->freq[5] = 32000000.0; + ics2494->freq[6] = 110000000.0; + ics2494->freq[7] = 80000000.0; + ics2494->freq[8] = 50350000.0; + ics2494->freq[9] = 56640000.0; + ics2494->freq[10] = 0.0; + ics2494->freq[11] = 44900000.0; + ics2494->freq[12] = 39910000.0; + ics2494->freq[13] = 44900000.0; + ics2494->freq[14] = 75000000.0; + ics2494->freq[15] = 65000000.0; + break; + case 102: + /* ATI 18811-1/ATI 18811-2 for ATI Mach32 */ + ics2494->freq[0] = 100000000.0; + ics2494->freq[1] = 126000000.0; + ics2494->freq[2] = 92400000.0; + ics2494->freq[3] = 36000000.0; + ics2494->freq[4] = 50350000.0; + ics2494->freq[5] = 56640000.0; + ics2494->freq[7] = 44900000.0; + ics2494->freq[8] = 135000000.0; + ics2494->freq[9] = 32000000.0; + ics2494->freq[10] = 110000000.0; + ics2494->freq[11] = 80000000.0; + ics2494->freq[12] = 39910000.0; + ics2494->freq[13] = 44900000.0; + ics2494->freq[14] = 75000000.0; + ics2494->freq[15] = 65000000.0; break; case 305: /* ICS2494A(N)-205 for S3 86C924 */ @@ -174,11 +341,11 @@ const device_t ics2494an_305_device = { .config = NULL }; -const device_t ati18810_device = { - .name = "ATI 18810 Clock Generator", - .internal_name = "ati18810", +const device_t ati18810_28800_device = { + .name = "ATI 18810 (ATI 28800) Clock Generator", + .internal_name = "ati18810_28800", .flags = 0, - .local = 10, + .local = 0, .init = ics2494_init, .close = ics2494_close, .reset = NULL, @@ -188,11 +355,11 @@ const device_t ati18810_device = { .config = NULL }; -const device_t ati18811_0_device = { - .name = "ATI 18811-0 Clock Generator", - .internal_name = "ati18811_0", +const device_t ati18811_0_28800_device = { + .name = "ATI 18811-0 (ATI 28800) Clock Generator", + .internal_name = "ati18811_0_28800", .flags = 0, - .local = 110, + .local = 1, .init = ics2494_init, .close = ics2494_close, .reset = NULL, @@ -202,11 +369,53 @@ const device_t ati18811_0_device = { .config = NULL }; -const device_t ati18811_1_device = { - .name = "ATI 18811-1 Clock Generator", - .internal_name = "ati18811_1", +const device_t ati18811_1_28800_device = { + .name = "ATI 18811-1 (ATI 28800) Clock Generator", + .internal_name = "ati18811_1_28800", .flags = 0, - .local = 111, + .local = 2, + .init = ics2494_init, + .close = ics2494_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t ati18810_mach32_device = { + .name = "ATI 18810 (ATI Mach32) Clock Generator", + .internal_name = "ati18810_mach32", + .flags = 0, + .local = 100, + .init = ics2494_init, + .close = ics2494_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t ati18811_0_mach32_device = { + .name = "ATI 18811-0 (ATI Mach32) Clock Generator", + .internal_name = "ati18811_0_mach32", + .flags = 0, + .local = 101, + .init = ics2494_init, + .close = ics2494_close, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t ati18811_1_mach32_device = { + .name = "ATI 18811-1 (ATI Mach32) Clock Generator", + .internal_name = "ati18811_1_mach32", + .flags = 0, + .local = 102, .init = ics2494_init, .close = ics2494_close, .reset = NULL, diff --git a/src/video/ramdac/vid_ramdac_bt48x.c b/src/video/ramdac/vid_ramdac_bt48x.c index d608750e3..64112e089 100644 --- a/src/video/ramdac/vid_ramdac_bt48x.c +++ b/src/video/ramdac/vid_ramdac_bt48x.c @@ -365,8 +365,11 @@ bt48x_recalctimings(void *priv, svga_t *svga) const bt48x_ramdac_t *ramdac = (bt48x_ramdac_t *) priv; svga->interlace = ramdac->cmd_r2 & 0x08; - if (ramdac->cmd_r3 & 0x08) - svga->hdisp *= 2; /* x2 clock multiplier */ + if (ramdac->cmd_r3 & 0x08) { + svga->hdisp <<= 1; /* x2 clock multiplier */ + svga->dots_per_clock <<= 1; + svga->clock *= 2.0; + } } void diff --git a/src/video/vid_8514a.c b/src/video/vid_8514a.c index 1c9a482af..32a402ec5 100644 --- a/src/video/vid_8514a.c +++ b/src/video/vid_8514a.c @@ -47,7 +47,7 @@ # undef CLAMP #endif -#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140_4k.BIN" +#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140_ROM.BIN" static void ibm8514_accel_outb(uint16_t port, uint8_t val, void *priv); static void ibm8514_accel_outw(uint16_t port, uint16_t val, void *priv); @@ -3930,7 +3930,7 @@ ibm8514_mca_reset(void *priv) ibm8514_log("MCA reset.\n"); dev->on = 0; - if (dev->extensions) + if (dev->extensions == ATI) ati8514_mca_write(0x102, 0, svga); else ibm8514_mca_write(0x102, 0, svga); @@ -3950,6 +3950,8 @@ ibm8514_vblank_start(void *priv) static void * ibm8514_init(const device_t *info) { + FILE *fp; + uint8_t *rom_load = NULL; uint32_t bios_addr = 0; uint16_t bios_rom_eeprom = 0x0000; @@ -3979,33 +3981,46 @@ ibm8514_init(const device_t *info) dev->extensions = device_get_config_int("extensions"); bios_addr = device_get_config_hex20("bios_addr"); if (dev->type & DEVICE_MCA) - bios_addr = 0xc6000; + bios_addr = 0xc6800; switch (dev->extensions) { case ATI: if (rom_present(BIOS_MACH8_ROM_PATH)) { mach_t * mach = (mach_t *) calloc(1, sizeof(mach_t)); svga->ext8514 = mach; + fp = rom_fopen(BIOS_MACH8_ROM_PATH, "rb"); + if (bios_addr & 0x800) + (void) fseek(fp, 0x000, SEEK_SET); + else + (void) fseek(fp, 0x800, SEEK_SET); - rom_init(&dev->bios_rom, - BIOS_MACH8_ROM_PATH, - bios_addr, 0x1000, 0xfff, - 0, MEM_MAPPING_EXTERNAL); + rom_load = malloc(0x2000); + (void) !fread(rom_load, 0x2000, 1, fp); + (void) fclose(fp); + memset(&dev->bios_rom, 0x00, sizeof(rom_t)); + dev->bios_rom.rom = rom_load; + dev->bios_rom.mask = 0x1fff; + mem_mapping_add(&dev->bios_rom.mapping, bios_addr, 0x2000, + ati8514_rom_readb, ati8514_rom_readw, NULL, + NULL, NULL, NULL, + dev->bios_rom.rom, MEM_MAPPING_EXTERNAL | MEM_MAPPING_ROM_WS, dev); ati8514_init(svga, svga->ext8514, svga->dev8514); - mach->accel.scratch0 = ((bios_addr >> 7) - 0x1000) >> 4; - bios_rom_eeprom = mach->accel.scratch0; if (dev->type & DEVICE_MCA) { + dev->accel.scratch0 = (((bios_addr >> 7) - 0x1000) >> 4); + dev->accel.scratch0 |= ((dev->accel.scratch0 + 0x01) << 8); + bios_rom_eeprom = dev->accel.scratch0; dev->pos_regs[0] = 0x88; dev->pos_regs[1] = 0x80; - mach->eeprom.data[0] = 0x0000; - mach->eeprom.data[1] = bios_rom_eeprom | ((bios_rom_eeprom | 0x01) << 8); - ibm8514_log("EEPROM Data1=%04x.\n", mach->eeprom.data[1]); + mach->eeprom.data[1] = bios_rom_eeprom; mca_add(ati8514_mca_read, ati8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga); ati_eeprom_load_mach8(&mach->eeprom, "ati8514_mca.nvr", 1); mem_mapping_disable(&dev->bios_rom.mapping); - } else + } else { + dev->accel.scratch0 = ((bios_addr >> 7) - 0x1000) >> 4; + dev->accel.scratch0 |= ((dev->accel.scratch0 + 0x01) << 8); ati_eeprom_load_mach8(&mach->eeprom, "ati8514.nvr", 0); + } break; } @@ -4099,21 +4114,32 @@ static const device_config_t isa_ext8514_config[] = { .description = "BIOS address", .type = CONFIG_HEX20, .default_string = NULL, - .default_int = 0xc8000, + .default_int = 0xc8800, .file_filter = NULL, .spinner = { 0 }, .selection = { { .description = "C800h", .value = 0xc8000 }, + { .description = "C880h", .value = 0xc8800 }, { .description = "CA00h", .value = 0xca000 }, + { .description = "CA80h", .value = 0xca800 }, { .description = "CC00h", .value = 0xcc000 }, + { .description = "CC80h", .value = 0xcc800 }, { .description = "CE00h", .value = 0xce000 }, + { .description = "CE80h", .value = 0xce800 }, { .description = "D000h", .value = 0xd0000 }, + { .description = "D080h", .value = 0xd0800 }, { .description = "D200h", .value = 0xd2000 }, + { .description = "D280h", .value = 0xd2800 }, { .description = "D400h", .value = 0xd4000 }, + { .description = "D480h", .value = 0xd4800 }, { .description = "D600h", .value = 0xd6000 }, + { .description = "D680h", .value = 0xd6800 }, { .description = "D800h", .value = 0xd8000 }, + { .description = "D880h", .value = 0xd8800 }, { .description = "DA00h", .value = 0xda000 }, + { .description = "DA80h", .value = 0xda800 }, { .description = "DC00h", .value = 0xdc000 }, + { .description = "DC80h", .value = 0xdc800 }, { .description = "DE00h", .value = 0xde000 }, { .description = "" } }, diff --git a/src/video/vid_ati18800.c b/src/video/vid_ati18800.c index 9c87746c6..11124a35b 100644 --- a/src/video/vid_ati18800.c +++ b/src/video/vid_ati18800.c @@ -269,7 +269,7 @@ ati18800_init(const device_t *info) ati18800_in, ati18800_out, NULL, NULL); - ati18800->svga.clock_gen = device_add(&ati18810_device); + ati18800->svga.clock_gen = device_add(&ati18810_28800_device); ati18800->svga.getclock = ics2494_getclock; io_sethandler(0x01ce, 0x0002, ati18800_in, NULL, NULL, ati18800_out, NULL, NULL, ati18800); diff --git a/src/video/vid_ati28800.c b/src/video/vid_ati28800.c index 284abe78c..205d934ee 100644 --- a/src/video/vid_ati28800.c +++ b/src/video/vid_ati28800.c @@ -407,13 +407,23 @@ static void ati28800_recalctimings(svga_t *svga) { ati28800_t *ati28800 = (ati28800_t *) svga->priv; - int clock_sel; + int clock_sel = 0x00; if (ati28800->regs[0xad] & 0x08) svga->hblankstart = ((ati28800->regs[0x0d] >> 2) << 8) + svga->crtc[2]; - clock_sel = ((svga->miscout >> 2) & 3) | ((ati28800->regs[0xbe] & 0x10) >> 1) | - ((ati28800->regs[0xb9] & 2) << 1); + if (svga->miscout & 0x04) + clock_sel |= 0x01; + if (svga->miscout & 0x08) + clock_sel |= 0x02; + if (ati28800->regs[0xb9] & 0x02) + clock_sel |= 0x04; + if (ati28800->regs[0xbe] & 0x10) + clock_sel |= 0x08; + + svga->interlace = !!(ati28800->regs[0xbe] & 0x02); + if (svga->interlace) + svga->dispend >>= 1; if (ati28800->regs[0xa3] & 0x10) svga->memaddr_latch |= 0x10000; @@ -452,9 +462,25 @@ ati28800_recalctimings(svga_t *svga) } else svga->ati_4color = 0; - if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) { + if (!svga->scrblank && svga->attr_palette_enable) { + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen); + + switch ((ati28800->regs[0xb8] >> 6) & 3) { + case 0: + default: + break; + case 1: + svga->clock *= 2.0; + break; + case 2: + svga->clock *= 3.0; + break; + case 3: + svga->clock *= 4.0; + break; + } + if ((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1)) { - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); ati28800_log("SEQREG1 bit 3=%x. gdcreg5 bits 5-6=%02x, 4bit pel=%02x, " "planar 16color=%02x, apa mode=%02x, attregs10 bit 7=%02x.\n", svga->seqregs[1] & 8, svga->gdcreg[5] & 0x60, @@ -568,7 +594,7 @@ ati28800k_init(const device_t *info) ati28800k_in, ati28800k_out, NULL, NULL); - ati28800->svga.clock_gen = device_add(&ati18810_device); + ati28800->svga.clock_gen = device_add(&ati18811_1_28800_device); ati28800->svga.getclock = ics2494_getclock; io_sethandler(0x01ce, 0x0002, ati28800k_in, NULL, NULL, ati28800k_out, NULL, NULL, ati28800); @@ -646,7 +672,7 @@ ati28800_init(const device_t *info) ati28800_in, ati28800_out, NULL, NULL); - ati28800->svga.clock_gen = device_add(&ati18810_device); + ati28800->svga.clock_gen = device_add(&ati18811_1_28800_device); ati28800->svga.getclock = ics2494_getclock; io_sethandler(0x01ce, 2, diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index 45a69ffab..24293ab1d 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -2431,6 +2431,11 @@ mach_out(uint16_t addr, uint8_t val, void *priv) svga_out(addr, val, svga); return; + case 0x3C2: + if (mach->regs[0xb8] & 0x08) + return; + break; + case 0x3C6: case 0x3C7: case 0x3C8: @@ -2465,10 +2470,56 @@ mach_out(uint16_t addr, uint8_t val, void *priv) case 0x3D5: if (svga->crtcreg & 0x20) return; - if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80) && !(mach->regs[0xb4] & 0x80)) + if ((svga->crtcreg < 7) && ((svga->crtc[0x11] & 0x80) || (mach->regs[0xb4] & 0x40)) && !(mach->regs[0xb4] & 0x80)) return; - if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80) && !(mach->regs[0xb4] & 0x80)) + if ((svga->crtcreg == 7) && ((svga->crtc[0x11] & 0x80) || (mach->regs[0xb4] & 0x40)) && !(mach->regs[0xb4] & 0x80)) val = (svga->crtc[7] & ~0x10) | (val & 0x10); + if (mach->regs[0xb8] & 0x04) { + if ((svga->crtcreg < 0x0a) || (svga->crtcreg > 0x0d)) + return; + } + if (mach->regs[0xb4] & 0x04) { + if (svga->crtcreg == 9) { + if (val & 0x8f) + return; + } + } + if (mach->regs[0xb4] & 0x08) { + if (svga->crtcreg == 6) + return; + if (svga->crtcreg == 7) { + if (val & 0xaf) + return; + } + if (svga->crtcreg == 9) { + if (val & 0x20) + return; + } + if (svga->crtcreg == 0x11) { + if (val & 0x0f) + return; + } + if ((svga->crtcreg == 0x10) || + (svga->crtcreg == 0x12) || + (svga->crtcreg == 0x15) || + (svga->crtcreg == 0x16)) + return; + } + if (mach->regs[0xb4] & 0x10) { + if ((svga->crtcreg == 0x0a) || + (svga->crtcreg == 0x0b)) + return; + } + if (mach->regs[0xb4] & 0x20) { + if (svga->crtcreg == 8) { + if (val & 0x7f) + return; + } + if (svga->crtcreg == 0x14) { + if (val & 0x1f) + return; + } + } old = svga->crtc[svga->crtcreg]; svga->crtc[svga->crtcreg] = val; @@ -2725,25 +2776,97 @@ mach_set_resolution(mach_t *mach, svga_t *svga) if (dev->v_syncstart == 1) dev->v_syncstart = 0x0601; + mach->accel.clock_sel_mode = 0; mach_log("ATI Mode: set=%02x, dispcntl=%02x, h_total=%d, hdisp=%d, vdisp=%d, v_total=%04x, v_syncstart=%04x, hsync_start=%d, hsync_width=%d, clocksel=%02x, advancedcntl=%02x.\n", mach->shadow_set & 0x03, dev->disp_cntl, dev->h_total, dev->hdisp, dev->vdisp, dev->v_total, dev->v_syncstart, dev->hsync_start, dev->hsync_width, mach->accel.clock_sel & 0xff, dev->accel.advfunc_cntl & 0x05); - if ((dev->disp_cntl >> 5) == 1) { /*Enable the 8514/A subsystem and set modes according to the shadow sets if needed.*/ + if ((dev->disp_cntl_2 >> 5) == 1) { /*Enable the 8514/A subsystem and set modes according to the shadow sets if needed.*/ switch (mach->shadow_set & 0x03) { case 0x01: if (!(dev->accel.advfunc_cntl & 0x04)) { - dev->h_total = 0x64; dev->hdisp = 640; dev->vdisp = 480; - dev->v_total = 0x0419; - dev->v_syncstart = 0x03d7; + if (ATI_8514A_ULTRA) { + dev->h_total = (mach->eeprom.data[0x11] & 0xff) + 1; + dev->v_total = mach->eeprom.data[0x0d] + 1; + dev->v_syncstart = mach->eeprom.data[9] + 1; + mach->accel.clock_sel_mode = (mach->eeprom.data[4] & 0xff) << 2; + } else { + mach_log("Mach: EEPROM 640x480: %04x.\n", mach->eeprom.data[7]); + switch (mach->eeprom.data[7] & 0xff) { + case 0x00: /*640x480 60Hz Non-interlaced*/ + default: + dev->h_total = 0x64; + dev->v_total = 0x0419; + dev->v_syncstart = 0x03d7; + mach->accel.clock_sel_mode = 0x50; + break; + case 0x01: /*640x480 72Hz Non-interlaced*/ + dev->h_total = 0x6a; + dev->v_total = 0x040c; + dev->v_syncstart = 0x03d1; + mach->accel.clock_sel_mode = 0x24; + break; + case 0x03: /*640x480 72Hz Non-interlaced Alt*/ + dev->h_total = 0x71; + dev->v_total = 0x04ca; + dev->v_syncstart = 0x0422; + mach->accel.clock_sel_mode = 0x6c; + break; + } + } } break; case 0x02: if (dev->accel.advfunc_cntl & 0x04) { - dev->h_total = 0x9e; dev->hdisp = 1024; dev->vdisp = 768; - dev->v_total = 0x0669; - dev->v_syncstart = 0x0601; + if (ATI_8514A_ULTRA) { + dev->h_total = ((mach->eeprom.data[0x11] >> 8) & 0xff) + 1; + dev->v_total = mach->eeprom.data[0x0c] + 1; + dev->v_syncstart = mach->eeprom.data[8] + 1; + mach->accel.clock_sel_mode = ((mach->eeprom.data[4] >> 8) & 0xff) << 2; + } else { + mach_log("Mach: EEPROM 1024x768: %04x.\n", mach->eeprom.data[9]); + switch (mach->eeprom.data[9] & 0xff) { + case 0x00: /*1024x768 76Hz Non-interlaced*/ + dev->h_total = 0xa3; + dev->v_total = 0x064b; + dev->v_syncstart = 0x060c; + mach->accel.clock_sel_mode = 0x2c; + break; + + case 0x01: /*1024x768 87Hz Interlaced*/ + default: + dev->h_total = 0x9e; + dev->v_total = 0x0669; + dev->v_syncstart = 0x0601; + mach->accel.clock_sel_mode = 0x1c; + break; + case 0x02: /*1024x768 60Hz Non-interlaced*/ + dev->h_total = 0xa8; + dev->v_total = 0x064a; + dev->v_syncstart = 0x0603; + mach->accel.clock_sel_mode = 0x3c; + break; + case 0x04: /*1024x768 70Hz Non-interlaced*/ + dev->h_total = 0xa6; + dev->v_total = 0x064a; + dev->v_syncstart = 0x0603; + mach->accel.clock_sel_mode = 0x38; + break; + case 0x08: /*1024x768 72Hz Non-interlaced*/ + dev->h_total = 0xa1; + dev->v_total = 0x064a; + dev->v_syncstart = 0x0603; + mach->accel.clock_sel_mode = 0x38; + break; + case 0x82: /*1024x768 66Hz Non-interlaced*/ + dev->h_total = 0xac; + dev->v_total = 0x065c; + dev->v_syncstart = 0x060b; + mach->accel.clock_sel_mode = 0x38; + break; + } + } } break; @@ -2751,23 +2874,93 @@ mach_set_resolution(mach_t *mach, svga_t *svga) break; } svga_recalctimings(svga); - } else if ((dev->disp_cntl >> 5) == 2) { /*Reset 8514/A to defaults if needed.*/ + } else if ((dev->disp_cntl_2 >> 5) == 2) { /*Reset 8514/A to defaults if needed.*/ if (dev->accel.advfunc_cntl & 0x04) { if (dev->hdisp == 640) { - dev->h_total = 0x9e; dev->hdisp = 1024; dev->vdisp = 768; - dev->v_total = 0x0669; - dev->v_syncstart = 0x0601; + if (ATI_8514A_ULTRA) { + dev->h_total = ((mach->eeprom.data[0x11] >> 8) & 0xff) + 1; + dev->v_total = mach->eeprom.data[0x0c] + 1; + dev->v_syncstart = mach->eeprom.data[8] + 1; + mach->accel.clock_sel_mode = ((mach->eeprom.data[4] >> 8) & 0xff) << 2; + } else { + mach_log("Mach Reset: EEPROM 1024x768: %04x.\n", mach->eeprom.data[9]); + switch (mach->eeprom.data[9] & 0xff) { + case 0x00: /*1024x768 76Hz Non-interlaced*/ + dev->h_total = 0xa3; + dev->v_total = 0x064b; + dev->v_syncstart = 0x060c; + mach->accel.clock_sel_mode = 0x2c; + break; + case 0x01: /*1024x768 87Hz Interlaced*/ + default: + dev->h_total = 0x9e; + dev->v_total = 0x0669; + dev->v_syncstart = 0x0601; + mach->accel.clock_sel_mode = 0x1c; + break; + case 0x02: /*1024x768 60Hz Non-interlaced*/ + dev->h_total = 0xa8; + dev->v_total = 0x064a; + dev->v_syncstart = 0x0603; + mach->accel.clock_sel_mode = 0x3c; + break; + case 0x04: /*1024x768 70Hz Non-interlaced*/ + dev->h_total = 0xa6; + dev->v_total = 0x064a; + dev->v_syncstart = 0x0603; + mach->accel.clock_sel_mode = 0x38; + break; + case 0x08: /*1024x768 72Hz Non-interlaced*/ + dev->h_total = 0xa1; + dev->v_total = 0x064a; + dev->v_syncstart = 0x0603; + mach->accel.clock_sel_mode = 0x38; + break; + case 0x82: /*1024x768 66Hz Non-interlaced*/ + dev->h_total = 0xac; + dev->v_total = 0x065c; + dev->v_syncstart = 0x060b; + mach->accel.clock_sel_mode = 0x38; + break; + } + } svga_recalctimings(svga); } } else { if (dev->hdisp == 1024) { - dev->h_total = 0x64; dev->hdisp = 640; dev->vdisp = 480; - dev->v_total = 0x0419; - dev->v_syncstart = 0x03d7; + if (ATI_8514A_ULTRA) { + dev->h_total = (mach->eeprom.data[0x11] & 0xff) + 1; + dev->v_total = mach->eeprom.data[0x0d] + 1; + dev->v_syncstart = mach->eeprom.data[9] + 1; + mach->accel.clock_sel_mode = (mach->eeprom.data[4] & 0xff) << 2; + } else { + mach_log("Mach: EEPROM 640x480: %04x.\n", mach->eeprom.data[7]); + switch (mach->eeprom.data[7] & 0xff) { + case 0x00: /*640x480 60Hz Non-interlaced*/ + default: + dev->h_total = 0x64; + dev->v_total = 0x0419; + dev->v_syncstart = 0x03d7; + mach->accel.clock_sel_mode = 0x50; + break; + case 0x01: /*640x480 72Hz Non-interlaced*/ + dev->h_total = 0x6a; + dev->v_total = 0x040c; + dev->v_syncstart = 0x03d1; + mach->accel.clock_sel_mode = 0x24; + break; + case 0x03: /*640x480 72Hz Non-interlaced Alt*/ + dev->h_total = 0x71; + dev->v_total = 0x04ca; + dev->v_syncstart = 0x0422; + mach->accel.clock_sel_mode = 0x6c; + break; + } + } svga_recalctimings(svga); } } @@ -2780,6 +2973,7 @@ ati8514_recalctimings(svga_t *svga) { mach_t *mach = (mach_t *) svga->ext8514; ibm8514_t *dev = (ibm8514_t *) svga->dev8514; + int _8514_modes = 0; mach_log("ON=%d, vgahdisp=%d.\n", dev->on, svga->hdisp); if (dev->on) { @@ -2790,6 +2984,29 @@ ati8514_recalctimings(svga_t *svga) dev->accel.ge_offset = (mach->accel.ge_offset_lo | (mach->accel.ge_offset_hi << 16)) << 2; mach->accel.crt_offset = (mach->accel.crt_offset_lo | (mach->accel.crt_offset_hi << 16)) << 2; + switch (mach->accel.clock_sel_mode) { + case 0x1c: + dev->interlace = 1; + _8514_modes = 1; + break; + case 0x24: + case 0x2c: + case 0x38: + case 0x3c: + case 0x50: + case 0x6c: + dev->interlace = 0; + _8514_modes = 2; + break; + default: + break; + } + + if (_8514_modes) + dev->ven_clock = mach->accel.clock_sel_mode & 0x7c; + else + dev->ven_clock = mach->accel.clock_sel & 0x7c; + dev->accel.ge_offset -= mach->accel.crt_offset; mach_log("HDISP=%d, VDISP=%d, shadowset=%x, 8514/A mode=%x, clocksel=%02x.\n", @@ -2811,10 +3028,11 @@ ati8514_recalctimings(svga_t *svga) else if (dev->h_disp == 640) dev->dispend = 480; - if (dev->accel.advfunc_cntl & 0x04) - svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / 44900000.0; - else - svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / 25175000.0; + dev->h_disp_time = dev->h_disp >> 3; + + svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((dev->ven_clock >> 2) & 0x0f, svga->clock_gen8514) / 2.0; + if (dev->ven_clock & 0x40) + svga->clock_8514 *= 2.0; if (dev->interlace) dev->dispend >>= 1; @@ -2840,12 +3058,24 @@ mach_recalctimings(svga_t *svga) { mach_t *mach = (mach_t *) svga->priv; ibm8514_t *dev = (ibm8514_t *) svga->dev8514; - int clock_sel; + int clock_sel = 0x00; + int _8514_modes = 0; if (mach->regs[0xad] & 0x08) svga->hblankstart = ((mach->regs[0x0d] >> 2) << 8) + svga->crtc[2]; - clock_sel = ((svga->miscout >> 2) & 3) | ((mach->regs[0xbe] & 0x10) >> 1) | ((mach->regs[0xb9] & 2) << 1); + if (svga->miscout & 0x04) + clock_sel |= 0x01; + if (svga->miscout & 0x08) + clock_sel |= 0x02; + if (mach->regs[0xb9] & 0x02) + clock_sel |= 0x04; + if (mach->regs[0xbe] & 0x10) + clock_sel |= 0x08; + + svga->interlace = !!(mach->regs[0xbe] & 0x02); + if (svga->interlace) + svga->dispend >>= 1; if (ATI_MACH32) { if (mach->regs[0xad] & 0x04) @@ -2887,6 +3117,7 @@ mach_recalctimings(svga_t *svga) } mach_log("ON=%d, override=%d, gelo=%04x, gehi=%04x, crtlo=%04x, crthi=%04x, vgahdisp=%d.\n", dev->on, svga->override, mach->accel.ge_offset_lo, mach->accel.ge_offset_hi, mach->accel.crt_offset_lo, mach->accel.crt_offset_hi, svga->hdisp); + if (dev->on) { dev->memaddr_latch = 0; /*(mach->accel.crt_offset_lo | (mach->accel.crt_offset_hi << 16)) << 2;*/ dev->interlace = !!(dev->disp_cntl & 0x10); @@ -2896,6 +3127,41 @@ mach_recalctimings(svga_t *svga) dev->accel.ge_offset = (mach->accel.ge_offset_lo | (mach->accel.ge_offset_hi << 16)); mach->accel.crt_offset = (mach->accel.crt_offset_lo | (mach->accel.crt_offset_hi << 16)); + switch (mach->accel.clock_sel_mode) { + case 0x1c: + dev->interlace = 1; + _8514_modes = 1; + break; + case 0x24: + case 0x2c: + case 0x38: + case 0x3c: + case 0x50: + case 0x6c: + dev->interlace = 0; + _8514_modes = 2; + break; + default: + break; + } + + if (_8514_modes) + dev->ven_clock = mach->accel.clock_sel_mode & 0x7c; + else + dev->ven_clock = mach->accel.clock_sel & 0x7c; + + if (ATI_MACH32) { + mach_log("Mach32: Clock=%02x, double=%02x, h_total=%02x.\n", (dev->ven_clock >> 2) & 0x0f, dev->ven_clock & 0x40, dev->h_total); + svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((dev->ven_clock >> 2) & 0x0f, svga->clock_gen8514) / 2.0; + } else { + mach_log("Mach8: Clock=%02x, double=%02x, h_total=%02x, selmode=%02x.\n", (dev->ven_clock >> 2) & 0x0f, dev->ven_clock & 0x40, dev->h_total, mach->accel.clock_sel_mode); + svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((dev->ven_clock >> 2) & 0x0f, svga->clock_gen8514) / 2.0; + if ((((dev->ven_clock >> 2) & 0x0f) == 0x09) && (dev->h_total == 0x6b)) + svga->clock_8514 /= 2.0; + } + if (dev->ven_clock & 0x40) + svga->clock_8514 *= 2.0; + if (dev->bpp) { dev->accel.ge_offset <<= 1; mach->accel.crt_offset <<= 1; @@ -2919,20 +3185,16 @@ mach_recalctimings(svga_t *svga) dev->h_disp = dev->hdisp; dev->dispend = dev->vdisp; if (dev->dispend == 959) { /*FIXME: vertical resolution mess on EEPROM tests on Mach8*/ - dev->dispend >>= 1; dev->dispend++; + dev->dispend >>= 1; } else if (dev->dispend == 600) dev->h_disp = 800; else if (dev->h_disp == 640) dev->dispend = 480; - dev->h_disp_time = dev->hdisp >> 3; + dev->h_disp_time = dev->h_disp >> 3; - svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen) / 2; - if (mach->accel.clock_sel & 0x40) - svga->clock_8514 *= 2; - - mach_log("8514/A clock sel=%x, divide reg ibm=%02x, divide reg vga=%02x.\n", clock_sel, mach->accel.clock_sel & 0x40, mach->regs[0xb8] & 0xc0); + mach_log("8514/A modes=%d, clocksel=%02x, clkselmode=%02x, divide reg ibm=%02x, divide reg vga=%02x, vgainterlace=%x, interlace=%x, htotal=%02x.\n", _8514_modes, mach->accel.clock_sel & 0xfe, mach->accel.clock_sel_mode & 0xfe, mach->accel.clock_sel & 0x40, mach->regs[0xb8] & 0x40, svga->interlace, dev->interlace, dev->htotal); if (dev->interlace) dev->dispend >>= 1; @@ -3059,30 +3321,30 @@ mach_recalctimings(svga_t *svga) } } else { dev->mode = VGA_MODE; - if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) { + if (!svga->scrblank && svga->attr_palette_enable) { mach_log("GDCREG5=%02x, ATTR10=%02x, ATI B0 bit 5=%02x, ON=%d.\n", svga->gdcreg[5] & 0x60, svga->attrregs[0x10] & 0x40, mach->regs[0xb0] & 0x20, dev->on); - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); - mach_log("VGA clock sel=%x, divide reg=%02x.\n", clock_sel, mach->regs[0xb8] & 0xc0); - if (ATI_MACH32) { - if (mach->regs[0xb8] & 0x40) - svga->clock *= 2; - } else { - switch (mach->regs[0xb8] & 0xc0) { - case 0x40: - svga->clock *= 2; - break; - case 0x80: - svga->clock *= 3; - break; - case 0xc0: - svga->clock *= 4; - break; + if (ATI_MACH32) + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); + else + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen); - default: - break; - } + switch ((mach->regs[0xb8] >> 6) & 3) { + case 0: + default: + break; + case 1: + svga->clock *= 2.0; + break; + case 2: + svga->clock *= 3.0; + break; + case 3: + svga->clock *= 4.0; + break; } + + mach_log("VGA clock sel=%02x, divide reg=%02x, miscout bits2-3=%x, machregbe bit4=%02x, machregb9 bit1=%02x, charwidth=%d, htotal=%02x, hdisptime=%02x, seqregs1 bit 3=%02x.\n", clock_sel, (mach->regs[0xb8] >> 6) & 3, svga->miscout & 0x0c, mach->regs[0xbe] & 0x10, mach->regs[0xb9] & 0x02, svga->char_width, svga->htotal, svga->hdisp_time, svga->seqregs[1] & 8); if ((svga->gdcreg[6] & 0x01) || (svga->attrregs[0x10] & 0x01)) { if ((svga->gdcreg[5] & 0x40) || (svga->attrregs[0x10] & 0x40) || (mach->regs[0xb0] & 0x20)) { svga->map8 = svga->pallook; @@ -3122,6 +3384,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u switch (port) { case 0x2e8: + mach_log("HTOTAL=%04x, len=%d, set=%x, ATI mode bit=%x.\n", val, len, mach->shadow_set & 0x03, mach->accel.clock_sel & 0x01); if ((mach->accel.clock_sel & 0x01) || (!(mach->accel.clock_sel & 0x01) && (mach->shadow_set & 0x03))) { /*For 8514/A mode, take the shadow sets into account.*/ if (!(mach->shadow_cntl & 0x04)) dev->htotal = val; @@ -3151,7 +3414,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u if (len == 2) { mach_log("HDISP and HTOTAL=%04x, len=%d, set=%x, ATI mode bit=%x.\n", val, len, mach->shadow_set & 0x03, mach->accel.clock_sel & 0x01); if ((mach->accel.clock_sel & 0x01) || (!(mach->accel.clock_sel & 0x01) && (mach->shadow_set & 0x03))) { /*For 8514/A mode, take the shadow sets into account.*/ - if (!(mach->shadow_cntl & 0x04)) + if ((!(mach->shadow_cntl & 0x04)) && ((val >> 8) & 0xff)) dev->htotal = (val >> 8) & 0xff; if (!(mach->shadow_cntl & 0x08)) { @@ -3179,7 +3442,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u if (len == 1) { mach_log("HDISP and HTOTAL+1=%02x, len=%d, set=%x, ATI mode bit=%x.\n", val, len, mach->shadow_set & 0x03, mach->accel.clock_sel & 0x01); if ((mach->accel.clock_sel & 0x01) || (!(mach->accel.clock_sel & 0x01) && (mach->shadow_set & 0x03))) { /*For 8514/A mode, take the shadow sets into account.*/ - if (!(mach->shadow_cntl & 0x04)) { + if (!(mach->shadow_cntl & 0x04) && val) { dev->htotal = val; } } @@ -3294,11 +3557,16 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u break; case 0x22e8: - if ((mach->shadow_cntl & 0x03) == 0x00) - dev->disp_cntl = val; + if ((mach->accel.clock_sel & 0x01) || (!(mach->accel.clock_sel & 0x01) && (mach->shadow_set & 0x03))) { + if ((mach->shadow_cntl & 0x03) == 0x00) + dev->disp_cntl = val; + } - mach_log("ATI 8514/A: DISP_CNTL write %04x=%02x, written=%02x, interlace=%d.\n", - port, val & 0x70, dev->disp_cntl & 0x70, dev->interlace); + if (((mach->shadow_cntl & 0x03) == 0x00) || !dev->local) + dev->disp_cntl_2 = val; + + mach_log("ATI 8514/A: DISP_CNTL write %04x=%02x, written=%02x, interlace=%02x, shadowset=%02x, shadowcntl=%02x.\n", + port, val & 0x70, dev->disp_cntl & 0x70, dev->disp_cntl & 0x10, mach->shadow_set & 0x03, mach->shadow_cntl & 0x03); svga_recalctimings(svga); break; @@ -3798,9 +4066,9 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0x52ef: mach_log("ATI 8514/A: (0x%04x) ScratchPad0 val=%04x.\n", port, val); if (len == 2) - mach->accel.scratch0 = val; + dev->accel.scratch0 = val; else { - WRITE8(port, mach->accel.scratch0, val); + WRITE8(port, dev->accel.scratch0, val); } break; @@ -3808,9 +4076,9 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u case 0x56ef: mach_log("ATI 8514/A: (0x%04x) ScratchPad1 val=%04x.\n", port, val); if (len == 2) - mach->accel.scratch1 = val; + dev->accel.scratch1 = val; else { - WRITE8(port, mach->accel.scratch1, val); + WRITE8(port, dev->accel.scratch1, val); } break; @@ -3851,6 +4119,7 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u else { WRITE8(port, mach->accel.max_waitstates, val); } + mach_log("ATI 8514/A: (0x%04x) val=0x%02x, len=%d.\n", port, val, len); break; case 0x6eee: @@ -3940,8 +4209,10 @@ mach_accel_out_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, u svga_recalctimings(svga); mach32_updatemapping(mach, svga); - } else - ati_eeprom_write(&mach->eeprom, !!(mach->accel.ext_ge_config & 0x04), !!(mach->accel.ext_ge_config & 0x02), !!(mach->accel.ext_ge_config & 0x01)); + } else { + if (mach->accel.ext_ge_config & 0x80) + ati_eeprom_write(&mach->eeprom, !!(mach->accel.ext_ge_config & 0x04), !!(mach->accel.ext_ge_config & 0x02), !!(mach->accel.ext_ge_config & 0x01)); + } break; case 0x7eee: @@ -4893,27 +5164,16 @@ mach_accel_in_call(uint16_t port, mach_t *mach, svga_t *svga, ibm8514_t *dev) case 0x52ee: case 0x52ef: - READ8(port, mach->accel.scratch0); - if (mach->mca_bus) { - if (svga->ext8514 != NULL) { - temp = (((dev->bios_rom.mapping.base >> 7) - 0x1000) >> 4); - if (port & 1) - temp |= 0x01; - } else { - if (mach->accel.scratch0 == 0x1234) - temp = 0x0000; - } - } else { - mach_log("ScratchPad0=%x.\n", mach->accel.scratch0); - if (mach->accel.scratch0 == 0x1234) - temp = 0x0000; - } + READ8(port, dev->accel.scratch0); + mach_log("ScratchPad0=%x.\n", dev->accel.scratch0); + if (dev->accel.scratch0 == 0x1234) + temp = 0x0000; break; case 0x56ee: case 0x56ef: - READ8(port, mach->accel.scratch1); - mach_log("ScratchPad1=%x.\n", mach->accel.scratch1); + READ8(port, dev->accel.scratch1); + mach_log("ScratchPad1=%x.\n", dev->accel.scratch1); break; case 0x5eee: @@ -6322,7 +6582,7 @@ mach32_hwcursor_draw(svga_t *svga, int displine) case 8: color0 = dev->pallook[mach->cursor_col_0]; color1 = dev->pallook[mach->cursor_col_1]; - mach_log("4/8BPP: Color0=%08x, Color1=%08x.\n", color0, color1); + mach_log("4/8BPP: Color0=%08x, Color1=%08x, interlace=%x, oddeven=%d.\n", color0, color1, dev->interlace, dev->hwcursor_oddeven); break; case 15: color0 = video_15to32[((mach->ext_cur_col_0_r << 16) | (mach->ext_cur_col_0_g << 8) | mach->cursor_col_0) & 0xffff]; @@ -7059,6 +7319,38 @@ mach_reset(void *priv) } } +uint8_t +ati8514_rom_readb(uint32_t addr, void *priv) +{ + const ibm8514_t *dev = (ibm8514_t *) priv; + const rom_t *rom = &dev->bios_rom; + uint8_t ret; + + mach_log("ROM1RB=%05x, ", addr); + + addr &= 0x1fff; + ret = rom->rom[addr]; + + mach_log("ReadBAddr1=%03x, ret=%02x.\n", addr, ret); + return (ret); +} + +uint16_t +ati8514_rom_readw(uint32_t addr, void *priv) +{ + const ibm8514_t *dev = (ibm8514_t *) priv; + const rom_t *rom = &dev->bios_rom; + uint16_t ret; + + mach_log("ROM1RW=%05x, ", addr); + + addr &= 0x1fff; + ret = (*(uint16_t *) &(rom->rom[addr])); + + mach_log("ReadWAddr1=%03x, ret=%04x.\n", addr, ret); + return (ret); +} + static void * mach8_init(const device_t *info) { @@ -7142,7 +7434,7 @@ mach8_init(const device_t *info) else mach->config1 |= 0x0c; mach->config1 |= 0x0400; - svga->clock_gen = device_add(&ati18811_1_device); + svga->clock_gen = device_add(&ati18811_1_mach32_device); } else if (mach->mca_bus) { video_inform(VIDEO_FLAG_TYPE_8514, &timing_mach32_mca); if (is286 && !is386) @@ -7150,7 +7442,7 @@ mach8_init(const device_t *info) else mach->config1 |= 0x06; mach->config1 |= 0x0400; - svga->clock_gen = device_add(&ati18811_1_device); + svga->clock_gen = device_add(&ati18811_1_mach32_device); } else if (mach->pci_bus) { video_inform(VIDEO_FLAG_TYPE_8514, &timing_mach32_pci); mach->config1 |= 0x0e; @@ -7159,11 +7451,11 @@ mach8_init(const device_t *info) else mach->config1 |= 0x0400; mach->config2 |= 0x2000; - svga->clock_gen = device_add(&ati18811_1_device); + svga->clock_gen = device_add(&ati18811_1_mach32_device); } else { video_inform(VIDEO_FLAG_TYPE_8514, &timing_gfxultra_isa); mach->config1 |= 0x0400; - svga->clock_gen = device_add(&ati18811_1_device); + svga->clock_gen = device_add(&ati18811_1_mach32_device); } mem_mapping_add(&mach->mmio_linear_mapping, 0, 0, mach32_ap_readb, mach32_ap_readw, mach32_ap_readl, mach32_ap_writeb, mach32_ap_writew, mach32_ap_writel, NULL, MEM_MAPPING_EXTERNAL, mach); mem_mapping_disable(&mach->mmio_linear_mapping); @@ -7185,10 +7477,12 @@ mach8_init(const device_t *info) mach->config1 |= 0x20; mach->config2 = 0x02; - svga->clock_gen = device_add(&ati18811_0_device); + svga->clock_gen = device_add(&ati18811_1_mach32_device); } dev->bpp = 0; svga->getclock = ics2494_getclock; + svga->clock_gen8514 = svga->clock_gen; + svga->getclock8514 = svga->getclock; dev->on = 0; dev->pitch = 1024; @@ -7287,6 +7581,8 @@ ati8514_init(svga_t *svga, void *ext8514, void *dev8514) dev->accel_out_fifo = ati8514_accel_out_fifo; dev->vblank_start = ati8514_vblank_start; + svga->clock_gen8514 = device_add(&ati18811_1_mach32_device); + svga->getclock8514 = ics2494_getclock; } static int diff --git a/src/video/vid_cga.c b/src/video/vid_cga.c index 1ca742890..01870ae94 100644 --- a/src/video/vid_cga.c +++ b/src/video/vid_cga.c @@ -788,6 +788,8 @@ cga_standalone_init(UNUSED(const device_t *info)) break; } + monitors[monitor_index_global].mon_composite = !!cga->composite; + return cga; } diff --git a/src/video/vid_cga_colorplus.c b/src/video/vid_cga_colorplus.c index 84d7a2af3..15d53d543 100644 --- a/src/video/vid_cga_colorplus.c +++ b/src/video/vid_cga_colorplus.c @@ -361,6 +361,8 @@ colorplus_standalone_init(UNUSED(const device_t *info)) lpt_port_setup(colorplus->lpt, LPT_MDA_ADDR); lpt_set_3bc_used(1); + monitors[monitor_index_global].mon_composite = colorplus->cga.composite; + return colorplus; } diff --git a/src/video/vid_cga_comp.c b/src/video/vid_cga_comp.c index ca9c2c9df..a316f79fb 100644 --- a/src/video/vid_cga_comp.c +++ b/src/video/vid_cga_comp.c @@ -28,9 +28,12 @@ #include <86box/mem.h> #include <86box/vid_cga.h> #include <86box/vid_cga_comp.h> +#include <86box/thread.h> int CGA_Composite_Table[1024]; +static mutex_t* cga_comp_mutex = NULL; + static double brightness = 0; static double contrast = 100; static double saturation = 100; @@ -69,23 +72,30 @@ static double intensity[4] = { #define NEW_CGA(c, i, r, g, b) (((c) / 0.72) * 0.29 + ((i) / 0.28) * 0.32 + ((r) / 0.28) * 0.1 + ((g) / 0.28) * 0.22 + ((b) / 0.28) * 0.07) -double mode_brightness; -double mode_contrast; -double mode_hue; -double min_v; -double max_v; +volatile double mode_brightness; +volatile double mode_contrast; +volatile double mode_hue; +volatile double min_v; +volatile double max_v; -double video_ri; -double video_rq; -double video_gi; -double video_gq; -double video_bi; -double video_bq; -int video_sharpness; -int tandy_mode_control = 0; +volatile double video_ri; +volatile double video_rq; +volatile double video_gi; +volatile double video_gq; +volatile double video_bi; +volatile double video_bq; +volatile int video_sharpness; static bool new_cga = 0; +static uint8_t current_cgamode = 0; + +int vid_cga_comp_brightness = 0; +int vid_cga_comp_sharpness = 0; +int vid_cga_comp_hue = 0; +int vid_cga_comp_saturation = 100; +int vid_cga_comp_contrast = 100; + void update_cga16_color(uint8_t cgamode) { @@ -109,6 +119,14 @@ update_cga16_color(uint8_t cgamode) static const double bi = -1.1069; static const double bq = 1.7046; + if (!cga_comp_mutex) + cga_comp_mutex = thread_create_mutex(); + + if (is_cpu_thread) + thread_wait_mutex(cga_comp_mutex); + + current_cgamode = cgamode; + if (!new_cga) { min_v = chroma_multiplexer[0] + intensity[0]; max_v = chroma_multiplexer[255] + intensity[3]; @@ -170,6 +188,9 @@ update_cga16_color(uint8_t cgamode) video_bi = (int) (bi * iq_adjust_i + bq * iq_adjust_q); video_bq = (int) (-bi * iq_adjust_q + bq * iq_adjust_i); video_sharpness = (int) (sharpness * 256 / 100); + + if (is_cpu_thread) + thread_release_mutex(cga_comp_mutex); } static uint8_t @@ -369,17 +390,41 @@ DecreaseSharpness(uint8_t cgamode) update_cga16_color(cgamode); } +void +cga_comp_reload(int new_brightness, int new_saturation, int new_sharpness, int new_hue, int new_contrast) +{ + if (!cga_comp_mutex) + cga_comp_mutex = thread_create_mutex(); + + if (!is_cpu_thread) + thread_wait_mutex(cga_comp_mutex); + + brightness = new_brightness; + contrast = new_contrast; + saturation = new_saturation; + sharpness = new_sharpness; + hue_offset = new_hue; + + update_cga16_color(current_cgamode); + + if (!is_cpu_thread) + thread_release_mutex(cga_comp_mutex); +} + void cga_comp_init(int revision) { + if (!cga_comp_mutex) + cga_comp_mutex = thread_create_mutex(); + new_cga = revision; /* Making sure this gets reset after reset. */ - brightness = 0; - contrast = 100; - saturation = 100; - sharpness = 0; - hue_offset = 0; + brightness = vid_cga_comp_brightness; + contrast = vid_cga_comp_contrast; + saturation = vid_cga_comp_saturation; + sharpness = vid_cga_comp_sharpness; + hue_offset = vid_cga_comp_hue; update_cga16_color(0); } diff --git a/src/video/vid_cga_compaq.c b/src/video/vid_cga_compaq.c index 1e21d63c1..81b063248 100644 --- a/src/video/vid_cga_compaq.c +++ b/src/video/vid_cga_compaq.c @@ -457,6 +457,8 @@ compaq_cga_init(const device_t *info) dev->crtc[9] = 13; + monitors[monitor_index_global].mon_composite = !!dev->composite; + return dev; } diff --git a/src/video/vid_cga_quadcolor.c b/src/video/vid_cga_quadcolor.c index 642391679..4159dc2c1 100644 --- a/src/video/vid_cga_quadcolor.c +++ b/src/video/vid_cga_quadcolor.c @@ -838,6 +838,8 @@ quadcolor_standalone_init(UNUSED(const device_t *info)) break; } + monitors[monitor_index_global].mon_composite = !!quadcolor->composite; + return quadcolor; } diff --git a/src/video/vid_cga_v6355.c b/src/video/vid_cga_v6355.c new file mode 100644 index 000000000..bdd4b82e6 --- /dev/null +++ b/src/video/vid_cga_v6355.c @@ -0,0 +1,1179 @@ +/* + * 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. + * + * Emulation of the Yamaha V6355 graphics card. + * + * Authors: Sarah Walker, + * John Elliott, + * Miran Grca, + * W. M. Martinez, + * + * Copyright 2008-2025 Sarah Walker. + * Copyright 2025 John Elliott. + * Copyright 2016-2025 Miran Grca. + * Copyright 2023-2025 W. M. Martinez + */ +#include +#include +#include +#include +#include +#include +#include <86box/86box.h> +#include "cpu.h" +#include <86box/io.h> +#include <86box/timer.h> +#include <86box/pit.h> +#include <86box/mem.h> +#include <86box/rom.h> +#include <86box/device.h> +#include <86box/video.h> +#include <86box/vid_v6355.h> +#include <86box/vid_cga_comp.h> +#include <86box/plat_unused.h> + +/* Emulation of the Yamaha V6355 chipset. This is a CGA clone that was + * probably designed primarily for laptops, where the primary display was + * a fixed-resolution LCD panel and there was the option of connecting to + * an external CGA monitor or PAL/SECAM television. + * + * Consequently, unlike a real CGA, it doesn't implement the first ten 6845 + * registers; instead, a small number of fixed resolutions can be selected + * using the V6355's own registers at 0x3DD / 0x3DF. Width is either 512 or 640 + * pixels; height is 64, 192, 200 or 204 pixels. + * + * Other features include: + * - MDA attribute support + * - Palette support - mapping from RGBI colour to 9-bit rrrgggbbb colours + * (when output is to composite) + * - Hardware mouse pointer support + * + * Outline of the V6355's extra registers, accessed through ports 0x3DD (index) + * and 0x3DE (data): + * + * 0x00-0x1F: Mouse pointer AND mask + * 0x20-0x3F: Mouse pointer XOR mask + * 0x40-0x5F: Palette for composite output. 0r,gb,0r,gb,0r,gb etc. + * 0x60-0x61: Mouse pointer X (big-endian, in 320x200 coordinates) + * 0x62: Not used (would be high byte of mouse pointer Y) + * 0x63: Mouse pointer Y + * 0x64: Mouse pointer visibility & vertical adjustment + * 0x65: Screen height & width, display type, RAM type + * 0x66: LCD adjust, MDA attribute emulation + * 0x67: Horizontal adjustment, other configuration + * 0x68: Mouse pointer colour + * 0x69: Control data register (not well documented) + * + * Currently unimplemented: + * > Display type (PAL/SECAM @50Hz vs NTSC @60Hz) + * > MDA monitor support + * > LCD panel support + * > Horizontal / vertical position adjustments + * > 160x200x16 and 640x200x16 video modes. Documentation suggests that these + * should be selected by setting bit 6 of the CGA control register, but + * that doesn't work on my real hardware, so I can't test and therefore + * can't replicate + * > Palette support on composite output. Composite_Process() does not + * appear to have any support for an arbitrary palette. + */ + +#define V6355_RGB 0 +#define V6355_COMPOSITE 1 +#define V6355_TRUECOLOR 2 + +#define COMPOSITE_OLD 0 +#define COMPOSITE_NEW 1 + +#define DOUBLE_NONE 0 +#define DOUBLE_SIMPLE 1 +#define DOUBLE_INTERPOLATE_SRGB 2 +#define DOUBLE_INTERPOLATE_LINEAR 3 + +#define DEVICE_VRAM 0x4000 +#define DEVICE_VRAM_MASK 0x3fff + +typedef union { + uint32_t color; + struct { + uint8_t b; + uint8_t g; + uint8_t r; + uint8_t a; + }; +} color_t; + +static uint8_t crtcmask[32] = { + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x7f, 0x7f, 0xf3, 0x1f, 0x7f, 0x1f, 0x3f, 0xff, 0x3f, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static uint8_t interp_lut[2][256][256]; + +static video_timings_t timing_v6355 = { .type = VIDEO_ISA, .write_b = 8, .write_w = 16, .write_l = 32, .read_b = 8, .read_w = 16, .read_l = 32 }; + +static uint8_t mdamap[256][2][2]; + +/* Default values for palette registers */ +static uint8_t defpalette[32] = { + 0x00, 0x00, /* Black */ + 0x00, 0x04, /* Blue */ + 0x00, 0x40, /* Green */ + 0x00, 0x44, /* Cyan */ + 0x04, 0x00, /* Red */ + 0x04, 0x04, /* Magenta */ + 0x04, 0x40, /* Yellow */ + 0x04, 0x44, /* Light grey */ + 0x01, 0x11, /* Dark grey */ + 0x00, 0x06, /* Bright blue */ + 0x00, 0x60, /* Bright green */ + 0x00, 0x66, /* Bright cyan */ + 0x06, 0x00, /* Bright red */ + 0x06, 0x06, /* Bright magenta */ + 0x06, 0x60, /* Bright yellow */ + 0x07, 0x77, /* Bright white */ +}; + +static void v6355_recalctimings(v6355_t *v6355); + +static void +v6355_out(uint16_t addr, uint8_t val, void *priv) +{ + v6355_t *v6355 = (v6355_t *) priv; + uint8_t old; + + switch (addr) { + case 0x3d0: + case 0x3d2: + case 0x3d4: + case 0x3d6: + v6355->crtcreg = val & 31; + break; + case 0x3d1: + case 0x3d3: + case 0x3d5: + case 0x3d7: + old = v6355->crtc[v6355->crtcreg]; + v6355->crtc[v6355->crtcreg] = val & crtcmask[v6355->crtcreg]; + if (old != val) { + if (v6355->crtcreg < 0xe || v6355->crtcreg > 0x10) + v6355_recalctimings(v6355); + } + break; + case 0x3d8: + if (((v6355->cgamode ^ val) & 5) != 0) { + v6355->cgamode = val; + update_cga16_color(v6355->cgamode); + } + v6355->cgamode = val; + break; + case 0x3d9: + v6355->cgacol = val; + break; + case 0x3dd: + v6355->v6355reg = val; + break; + case 0x3de: + v6355->v6355data[v6355->v6355reg] = val; + + /* Writes in the 0x40-0x5F range update the palette */ + if (v6355->v6355reg >= 0x40 && v6355->v6355reg < 0x60) { + int r = (v6355->v6355data[v6355->v6355reg & 0xFE]) & 7; + int g = (v6355->v6355data[v6355->v6355reg | 0x01] >> 4) & 7; + int b = (v6355->v6355data[v6355->v6355reg | 0x01]) & 7; + v6355->v6355pal[(v6355->v6355reg - 0x40) / 2] = + makecol(r * 0xFF / 7, g * 0xFF / 7, b * 0xFF / 7); + } + + /* Register autoincrements after a write. */ + v6355->v6355reg = (v6355->v6355reg + 1) % sizeof(v6355->v6355data); + break; + case 0x3df: + /* Supposedly used for memory paging in 16-colour mode, but + * I've found no documentation to explain how */ + break; + } +} + +static uint8_t +v6355_in(uint16_t addr, void *priv) +{ + v6355_t *v6355 = (v6355_t *) priv; + uint8_t ret = 0xff; + + switch (addr) { + case 0x3d4: + ret = v6355->crtcreg; + break; + case 0x3d5: + ret = v6355->crtc[v6355->crtcreg]; + break; + case 0x3da: + ret = v6355->cgastat; + break; + } + + return ret; +} + +static void +v6355_write(uint32_t addr, uint8_t val, void *priv) +{ + v6355_t *v6355 = (v6355_t *) priv; + + v6355->vram[addr & 0x3fff] = val; + + cycles -= 4; +} + +static uint8_t +v6355_read(uint32_t addr, void *priv) +{ + v6355_t *v6355 = (v6355_t *) priv; + + cycles -= 4; + + return v6355->vram[addr & 0x3fff]; +} + +/* Get width of display area (always 512px or 640px) */ +static uint32_t +v6355_width(v6355_t *v6355) +{ + return (v6355->v6355data[0x65] & 4) ? 512 : 640; +} + +/* Get height of display area (192px, 200px, 204px or 64px) */ +static uint32_t +v6355_height(v6355_t *v6355) +{ + static const unsigned heights[4] = { 192, 200, 204, 64 }; + + return heights[v6355->v6355data[0x65] & 3]; +} + +/* Timings on a V6355 are largely fixed */ +static void +v6355_recalctimings(v6355_t *v6355) +{ + double disptime; + double _dispontime, _dispofftime; +#ifndef USE_CGA_TIMINGS + double crtcconst = (cpuclock / 21477270.0 * (double) (1ULL << 32)) * 8.0; +#endif + + uint32_t w = v6355_width(v6355); + + disptime = w + 33; + _dispontime = w; + _dispofftime = disptime - _dispontime; +#ifdef USE_CGA_TIMINGS + _dispontime *= CGACONST; + _dispofftime *= CGACONST; +#else + _dispontime *= crtcconst; + _dispofftime *= crtcconst; +#endif + v6355->dispontime = (uint64_t)_dispontime; + v6355->dispofftime = (uint64_t)_dispofftime; +} + +/* Overlay the pointer on a line of the display. pixel[] is an array of 640 + * IBGR values containing the pixels to draw onto */ +static void +v6355_pointer(v6355_t *v6355, uint8_t *pixel) +{ + int c, pxc; + int y = v6355->displine - v6355->firstline; + + /* The pointer coordinates are on a 336x216 grid, with (16,16) being + * the top left-hand corner of the visible area */ + int pointer_x = (v6355->v6355data[0x60] << 8) | (v6355->v6355data[0x61]); + int pointer_y = v6355->v6355data[0x63]; + uint8_t mc; + uint8_t mand; + uint8_t mxor; + uint8_t mflags; + + /* Mouse drawing options */ + mflags = v6355->v6355data[0x64]; + + /* If the pointer is blinking and not currently shown, don't draw it */ + if ((v6355->cgablink & 8) && (mflags & 1)) + return; + + /* If this line doesn't intersect the pointer, nothing to do */ + if ((y < (pointer_y - 16)) || (y >= pointer_y)) + return; + + y -= (pointer_y - 16); + + /* Get mouse AND and XOR masks */ + mand = v6355->v6355data[0x68] & 0x0F; + mxor = (v6355->v6355data[0x68] >> 4) & 0x0F; + + /* Draw up to 16 double-width pixels */ + for (c = 0; c < 32; c++) { + mc = 0x80 >> ((c & 0x0E) >> 1); + pxc = c + 2 * (pointer_x - 16); + + if (pxc < 0 || pxc >= 640) + /* X clipping */ + continue; + + if (mflags & 2) { + /* Apply AND mask? */ + if (v6355->v6355data[y * 2 + c / 16] & mc) + pixel[pxc] &= mand; + } + + if (mflags & 4) { + /* Apply XOR mask? */ + if (v6355->v6355data[y * 2 + c / 16 + 32] & mc) + pixel[pxc] ^= mxor; + } + } +} + +/* Convert attribute byte to CGA colours */ +static void +v6355_map_attrs(v6355_t *v6355, uint8_t chr, uint8_t attr, uint8_t *cols) +{ + if (v6355->v6355data[0x66] & 0x40) { + /* MDA-style attributes */ + int blink = (v6355->cgamode & 0x20) && (v6355->cgablink & 8) && (attr & 0x80); + + cols[1] = mdamap[attr][blink][1]; + cols[0] = mdamap[attr][blink][0]; + } else { + /* CGA attributes (blinking enabled) */ + if (v6355->cgamode & 0x20) { + cols[1] = attr & 15; + cols[0] = (attr >> 4) & 7; + if ((v6355->cgablink & 8) && (attr & 0x80) && !v6355->drawcursor) + cols[1] = cols[0]; + } else { + /* CGA attributes (blinking disabled) */ + cols[1] = attr & 15; + cols[0] = attr >> 4; + } + } +} + +/* Render a line as 640 pixels in 80-column text mode */ +static void +v6355_line_text80(v6355_t *v6355, uint8_t *pixel, uint16_t ca) +{ + int32_t x, c; + uint8_t chr, attr; + uint32_t w = v6355_width(v6355) / 8; + uint8_t cols[2]; + + for (x = 0; x < w; x++) { + if (v6355->cgamode & 8) { + chr = v6355->charbuffer[x << 1]; + attr = v6355->charbuffer[(x << 1) + 1]; + } else + chr = attr = 0; + + v6355_map_attrs(v6355, chr, attr, cols); + + for (c = 0; c < 8; c++) { + uint8_t data = fontdat[chr + v6355->fontbase][v6355->sc & 7]; + + /* Underline attribute if enabled */ + if ((v6355->v6355data[0x66] & 0x80) && ((attr & 7) == 1) && ((v6355->sc & 7) == 7)) + data = 0xff; + + pixel[(x << 3) + c] = cols[(data & (1 << (c ^ 7))) ? 1 : 0]; + } + } +} + +/* Render a line as 640 pixels in 40-column text mode */ +static void +v6355_line_text40(v6355_t *v6355, uint8_t *pixel, uint16_t ca) +{ + int32_t x, c; + uint8_t chr, attr; + uint32_t w = v6355_width(v6355) / 16; + uint8_t cols[2]; + + for (x = 0; x < w; x++) { + if (v6355->cgamode & 8) { + chr = v6355->vram[((v6355->ma + x) << 1) & 0x3fff]; + attr = v6355->vram[(((v6355->ma + x) << 1) + 1) & 0x3fff]; + } else + chr = attr = 0; + + v6355_map_attrs(v6355, chr, attr, cols); + + for (c = 0; c < 8; c++) { + uint8_t data = fontdat[chr + v6355->fontbase][v6355->sc & 7]; + + /* Underline attribute if enabled */ + if ((v6355->v6355data[0x66] & 0x80) && ((attr & 7) == 1) && ((v6355->sc & 7) == 7)) + data = 0xff; + + pixel[(x << 4) + (c << 1)] = pixel[(x << 4) + (c << 1) + 1] = + cols[(data & (1 << (c ^ 7))) ? 1 : 0]; + } + } +} + +/* Render a line as 640 pixels in 320-pixel graphics mode */ +static void +v6355_line_graphics320(v6355_t *v6355, uint8_t *pixel) +{ + int32_t x; + int32_t c; + uint8_t cols[4]; + uint8_t intensity; + uint16_t dat; + uint32_t width = v6355_width(v6355) / 16; + + cols[0] = v6355->cgacol & 15; + + intensity = (v6355->cgacol & 16) ? 8 : 0; + + if (v6355->cgamode & 4) { + cols[1] = intensity | 3; + cols[2] = intensity | 4; + cols[3] = intensity | 7; + } else if (v6355->cgacol & 32) { + cols[1] = intensity | 3; + cols[2] = intensity | 5; + cols[3] = intensity | 7; + } else { + cols[1] = intensity | 2; + cols[2] = intensity | 4; + cols[3] = intensity | 6; + } + + for (x = 0; x < width; x++) { + if (v6355->cgamode & 8) + dat = (v6355->vram[((v6355->ma << 1) & 0x1fff) + ((v6355->sc & 1) * 0x2000)] << 8) | + v6355->vram[((v6355->ma << 1) & 0x1fff) + ((v6355->sc & 1) * 0x2000) + 1]; + else + dat = 0; + + v6355->ma++; + + for (c = 0; c < 8; c++) { + pixel[(x << 4) + (c << 1)] = pixel[(x << 4) + (c << 1) + 1] = cols[dat >> 14]; + dat <<= 2; + } + } +} + +/* Render a line as 640 pixels in 640-pixel graphics mode */ +static void +v6355_line_graphics640(v6355_t *v6355, uint8_t *pixel) +{ + int32_t x; + int32_t c; + uint8_t cols[2]; + uint16_t dat; + uint32_t width = v6355_width(v6355) / 16; + + cols[0] = 0; + cols[1] = v6355->cgacol & 15; + + for (x = 0; x < width; x++) { + if (v6355->cgamode & 8) + dat = (v6355->vram[((v6355->ma << 1) & 0x1fff) + ((v6355->sc & 1) * 0x2000)] << 8) | + v6355->vram[((v6355->ma << 1) & 0x1fff) + ((v6355->sc & 1) * 0x2000) + 1]; + else + dat = 0; + + v6355->ma++; + + for (c = 0; c < 16; c++) { + pixel[(x << 4) + c] = cols[dat >> 15]; + dat <<= 1; + } + } +} + +static void +v6355_render(v6355_t *v6355, int line) +{ + uint16_t ca = (v6355->crtc[15] | (v6355->crtc[14] << 8)) & 0x3fff; + int width = v6355_width(v6355); + int c; + int x; + int drawcursor; + uint32_t cols[4]; + uint8_t pixel[640]; + + /* Draw border */ + cols[0] = ((v6355->cgamode & 0x12) == 0x12) ? 0 : (v6355->cgacol & 15); + + for (c = 0; c < 8; c++) { + ((uint32_t *) buffer32->line[line])[c] = cols[0]; + ((uint32_t *) buffer32->line[line])[c + width + 8] = cols[0]; + } + + /* Render screen data. */ + if (v6355->cgamode & 1) { + /* High-res text */ + v6355_line_text80(v6355, pixel, ca); + v6355_pointer(v6355, pixel); + + for (x = 0; x < (width / 8); x++) { + drawcursor = ((v6355->ma == ca) && v6355->con && v6355->cursoron); + if (drawcursor) { + for (c = 0; c < 8; c++) + ((uint32_t *) buffer32->line[line])[(x << 3) + c + 8] = pixel[(x << 3) + c] ^ 0xffffff; + } else { + for (c = 0; c < 8; c++) + ((uint32_t *)buffer32->line[line])[(x << 3) + c + 8] = pixel[(x << 3) + c]; + } + + v6355->ma++; + } + } else if (!(v6355->cgamode & 2)) { + /* Low-res text */ + v6355_line_text40(v6355, pixel, ca); + v6355_pointer(v6355, pixel); + + for (x = 0; x < (width / 16); x++) { + drawcursor = ((v6355->ma == ca) && v6355->con && v6355->cursoron); + if (drawcursor) { + for (c = 0; c < 16; c++) + ((uint32_t *) buffer32->line[line])[(x << 4) + c + 8] = pixel[(x << 4) + c] ^ 0xffffff; + } else { + for (c = 0; c < 16; c++) + ((uint32_t *)buffer32->line[line])[(x << 4) + c + 8] = pixel[(x << 4) + c]; + } + + v6355->ma++; + } + } else if (!(v6355->cgamode & 16)) { + /* Low-res graphics + * XXX There should be a branch for 160x200x16 graphics somewhere around here */ + v6355_line_graphics320(v6355, pixel); + v6355_pointer(v6355, pixel); + + for (x = 0; x < (width / 16); x++) { + for (c = 0; c < 16; c++) + ((uint32_t *) buffer32->line[line])[(x << 4) + c + 8] = pixel[(x << 4) + c]; + } + } else { + /* High-res graphics + * XXX There should be a branch for 640x200x16 graphics somewhere around here */ + v6355_line_graphics640(v6355, pixel); + v6355_pointer(v6355, pixel); + + for (x = 0; x < (width / 16); x++) { + for (c = 0; c < 16; c++) + ((uint32_t *) buffer32->line[line])[(x << 4) + c + 8] = pixel[(x << 4) + c]; + } + } +} + +static void +v6355_render_blank(v6355_t *v6355, int line) +{ + int width = v6355_width(v6355); + uint32_t cols[4]; + + cols[0] = ((v6355->cgamode & 0x12) == 0x12) ? 0 : (v6355->cgacol & 15); + hline(buffer32, 0, line, width + 16, cols[0]); +} + +static void +v6355_render_process(v6355_t *v6355, int line) +{ + int c; + uint8_t border; + int width = v6355_width(v6355); + int x = width + 16; + + /* Now render the 640 pixels to the display buffer */ + switch (v6355->display_type) { + /* XXX V6355_COMPOSITE can't use the V6355's palette registers */ + case V6355_COMPOSITE: + for (c = 0; c < x; c++) + buffer32->line[line][c] = ((uint32_t *) buffer32->line[line])[c] & 0xf; + + border = ((v6355->cgamode & 0x12) == 0x12) ? 0 : (v6355->cgacol & 15); + + Composite_Process(v6355->cgamode, border, (width + 16) >> 2, buffer32->line[line]); + break; + case V6355_TRUECOLOR: + /* V6355_TRUECOLOR is a fictitious display that behaves like RGB except it + * takes account of the V6355's palette registers */ + for (c = 0; c < x; c++) + ((uint32_t *) buffer32->line[line])[c] = v6355->v6355pal[((uint32_t *) buffer32->line[line])[c] & 0xf]; + break; + default: + video_process_8(width + 16, line); + break; + } +} + +static uint8_t +v6355_interpolate_srgb(uint8_t co1, uint8_t co2, double fraction) +{ + uint8_t ret = ((co2 - co1) * fraction + co1); + + return ret; +} + +static uint8_t +v6355_interpolate_linear(uint8_t co1, uint8_t co2, double fraction) +{ + double c1, c2; + double r1, r2; + uint8_t ret; + + c1 = ((double) co1) / 255.0; + c1 = pow((co1 >= 0) ? c1 : -c1, 2.19921875); + if (co1 <= 0) + c1 = -c1; + c2 = ((double) co2) / 255.0; + c2 = pow((co2 >= 0) ? c2 : -c2, 2.19921875); + if (co2 <= 0) + c2 = -c2; + r1 = ((c2 - c1) * fraction + c1); + r2 = pow((r1 >= 0.0) ? r1 : -r1, 1.0 / 2.19921875); + if (r1 <= 0.0) + r2 = -r2; + ret = (uint8_t) round(r2 * 255.0); + + return ret; +} + +static color_t +v6355_interpolate_lookup(v6355_t *v6355, color_t color1, color_t color2, UNUSED(double fraction)) +{ + color_t ret; + uint8_t dt = v6355->double_type - DOUBLE_INTERPOLATE_SRGB; + + ret.a = 0x00; + ret.r = interp_lut[dt][color1.r][color2.r]; + ret.g = interp_lut[dt][color1.g][color2.g]; + ret.b = interp_lut[dt][color1.b][color2.b]; + + return ret; +} + +static void +v6355_interpolate(v6355_t *v6355, int x, int y, int w, int h) +{ + double quotient = 0.5; + + for (int i = y; i < (y + h); i++) { + if (i & 1) for (int j = x; j < (x + w); j++) { + int prev = i - 1; + int next = i + 1; + color_t prev_color, next_color; + color_t black; + color_t interim_1, interim_2; + color_t final; + + if (i < 0) + continue; + + black.color = 0x00000000; + + if ((prev >= 0) && (prev < (y + h))) + prev_color.color = buffer32->line[prev][j]; + else + prev_color.color = 0x00000000; + + if ((next >= 0) && (next < (y + h))) + next_color.color = buffer32->line[next][j]; + else + next_color.color = 0x00000000; + + interim_1 = v6355_interpolate_lookup(v6355, prev_color, black, quotient); + interim_2 = v6355_interpolate_lookup(v6355, black, next_color, quotient); + final = v6355_interpolate_lookup(v6355, interim_1, interim_2, quotient); + + buffer32->line[i][j] = final.color; + } + } +} + +static void +v6355_blit_memtoscreen(v6355_t *v6355, int x, int y, int w, int h) +{ + if (v6355->double_type > DOUBLE_SIMPLE) + v6355_interpolate(v6355, x, y, w, h); + + video_blit_memtoscreen(x, y, w, h); +} + +static void +v6355_poll(void *priv) +{ + v6355_t *v6355 = (v6355_t *) priv; + int x; + int oldvc; + int oldsc; + int xs_temp; + int ys_temp; + int old_ma; + + int width = v6355_width(v6355); + int height = v6355_height(v6355); + + /* Simulated CRTC height registers */ + int crtc4, crtc5, crtc6, crtc7, crtc8, crtc9; + + if (!(v6355->cgamode & 2)) { + /* Text mode values */ + crtc4 = (height + 54) / 8; + crtc5 = 6; + crtc6 = height / 8; + crtc7 = (height + 24) / 8; + crtc8 = 2; + crtc9 = 7; + } else { + /* Graphics mode values */ + crtc4 = (height + 54) / 2; + crtc5 = 6; + crtc6 = height / 2; + crtc7 = (height + 24) / 2; + crtc8 = 2; + crtc9 = 1; + } + + if (!v6355->linepos) { + timer_advance_u64(&v6355->timer, v6355->dispofftime); + + v6355->cgastat |= 1; + v6355->linepos = 1; + + oldsc = v6355->sc; + + if ((crtc8 & 3) == 3) + v6355->sc = ((v6355->sc << 1) + v6355->oddeven) & 7; + + if (v6355->cgadispon) { + if (v6355->displine < v6355->firstline) { + v6355->firstline = v6355->displine; + video_wait_for_buffer(); + } + + v6355->lastline = v6355->displine; + + switch (v6355->double_type) { + default: + v6355_render(v6355, v6355->displine << 1); + v6355_render_blank(v6355, (v6355->displine << 1) + 1); + break; + case DOUBLE_NONE: + v6355_render(v6355, v6355->displine); + break; + case DOUBLE_SIMPLE: + old_ma = v6355->ma; + v6355_render(v6355, v6355->displine << 1); + v6355->ma = old_ma; + v6355_render(v6355, (v6355->displine << 1) + 1); + break; + } + } else { + switch (v6355->double_type) { + default: + v6355_render_blank(v6355, v6355->displine << 1); + break; + case DOUBLE_NONE: + v6355_render_blank(v6355, v6355->displine); + break; + case DOUBLE_SIMPLE: + v6355_render_blank(v6355, v6355->displine << 1); + v6355_render_blank(v6355, (v6355->displine << 1) + 1); + break; + } + } + + switch (v6355->double_type) { + default: + v6355_render_process(v6355, v6355->displine << 1); + v6355_render_process(v6355, (v6355->displine << 1) + 1); + break; + case DOUBLE_NONE: + v6355_render_process(v6355, v6355->displine); + break; + } + + v6355->sc = oldsc; + + if (v6355->vc == crtc7 && !v6355->sc) + v6355->cgastat |= 8; + + v6355->displine++; + + if (v6355->displine >= 360) + v6355->displine = 0; + } else { + timer_advance_u64(&v6355->timer, v6355->dispontime); + + v6355->linepos = 0; + + if (v6355->vsynctime) { + v6355->vsynctime--; + + if (!v6355->vsynctime) + v6355->cgastat &= ~8; + } + + if (v6355->sc == (v6355->crtc[11] & 31) || ((crtc8 & 3) == 3 && v6355->sc == ((v6355->crtc[11] & 31) >> 1))) { + v6355->con = 0; + v6355->coff = 1; + } + + if ((crtc8 & 3) == 3 && v6355->sc == (crtc9 >> 1)) + v6355->maback = v6355->ma; + + if (v6355->vadj) { + v6355->sc++; + v6355->sc &= 31; + v6355->ma = v6355->maback; + v6355->vadj--; + + if (!v6355->vadj) { + v6355->cgadispon = 1; + v6355->ma = v6355->maback = (v6355->crtc[13] | (v6355->crtc[12] << 8)) & 0x3fff; + v6355->sc = 0; + } + } else if (v6355->sc == crtc9) { + v6355->maback = v6355->ma; + v6355->sc = 0; + oldvc = v6355->vc; + v6355->vc++; + v6355->vc &= 127; + + if (v6355->vc == crtc6) + v6355->cgadispon = 0; + + if (oldvc == crtc4) { + v6355->vc = 0; + v6355->vadj = crtc5; + + if (!v6355->vadj) + v6355->cgadispon = 1; + + if (!v6355->vadj) + v6355->ma = v6355->maback = (v6355->crtc[13] | (v6355->crtc[12] << 8)) & 0x3fff; + + if ((v6355->crtc[10] & 0x60) == 0x20) + v6355->cursoron = 0; + else + v6355->cursoron = v6355->cgablink & 8; + } + + if (v6355->vc == crtc7) { + v6355->cgadispon = 0; + v6355->displine = 0; + v6355->vsynctime = 16; + if (crtc7) { + x = width + 16; + v6355->lastline++; + + xs_temp = x; + ys_temp = v6355->lastline - v6355->firstline; + if (v6355->double_type > DOUBLE_NONE) + ys_temp <<= 1; + + if ((xs_temp > 0) && (ys_temp > 0)) { + if (xs_temp < 64) + xs_temp = 656; + if (ys_temp < 32) + ys_temp = 200; + if (!enable_overscan) + xs_temp -= 16; + + if (((xs_temp != xsize) || (ys_temp != ysize) || video_force_resize_get())) { + xsize = xs_temp; + ysize = ys_temp; + if (v6355->double_type > DOUBLE_NONE) + set_screen_size(xsize, ysize + (enable_overscan ? 16 : 0)); + else + set_screen_size(xsize, ysize + (enable_overscan ? 8 : 0)); + + if (video_force_resize_get()) + video_force_resize_set(0); + } + + if (v6355->double_type > DOUBLE_NONE) { + if (enable_overscan) + v6355_blit_memtoscreen(v6355, 0, (v6355->firstline - 4) << 1, + xsize, ((v6355->lastline - v6355->firstline) << 1) + 16); + else + v6355_blit_memtoscreen(v6355, 8, v6355->firstline << 1, + xsize, (v6355->lastline - v6355->firstline) << 1); + } else { + if (enable_overscan) + video_blit_memtoscreen(0, v6355->firstline - 4, + xsize, (v6355->lastline - v6355->firstline) + 8); + else + video_blit_memtoscreen(8, v6355->firstline, + xsize, v6355->lastline - v6355->firstline); + } + } + + frames++; + + video_res_x = xsize - 16; + video_res_y = ysize; + if (v6355->cgamode & 1) { + video_res_x /= 8; + video_res_y /= crtc9 + 1; + video_bpp = 0; + } else if (!(v6355->cgamode & 2)) { + video_res_x /= 16; + video_res_y /= crtc9 + 1; + video_bpp = 0; + } else if (!(v6355->cgamode & 16)) { + video_res_x /= 2; + video_bpp = 2; + } else + video_bpp = 1; + } + + v6355->firstline = 1000; + v6355->lastline = 0; + v6355->cgablink++; + v6355->oddeven ^= 1; + } + } else { + v6355->sc++; + v6355->sc &= 31; + v6355->ma = v6355->maback; + } + + if (v6355->cgadispon) + v6355->cgastat &= ~1; + + if ((v6355->sc == (v6355->crtc[10] & 31) || ((crtc8 & 3) == 3 && v6355->sc == ((v6355->crtc[10] & 31) >> 1)))) + v6355->con = 1; + + if (v6355->cgadispon && (v6355->cgamode & 1)) { + for (x = 0; x < ((width / 8) * 2); x++) + v6355->charbuffer[x] = v6355->vram[(((v6355->ma << 1) + x) & 0x3fff)]; + } + } +} + +static void * +v6355_standalone_init(const device_t *info) { + int n; + int c; + v6355_t *v6355 = calloc(1, sizeof(v6355_t)); + + video_inform(VIDEO_FLAG_TYPE_CGA, &timing_v6355); + + v6355->display_type = device_get_config_int("display_type"); + + overscan_x = overscan_y = 16; + + /* Initialise the palette registers to default values */ + memcpy(v6355->v6355data + 0x40, defpalette, 0x20); + + for (n = 0; n < 16; n++) { + int r = (v6355->v6355data[0x40 + 2 * n]) & 7; + int g = (v6355->v6355data[0x41 + 2 * n] >> 4) & 7; + int b = (v6355->v6355data[0x41 + 2 * n]) & 7; + + v6355->v6355pal[n] = makecol((r * 0xff) / 7, (g * 0xff) / 7, (b * 0xff) / 7); + } + + /* Default to 200 lines */ + v6355->v6355data[0x65] = 0x01; + + /* Set up CGA -> MDA attribute mapping */ + for (c = 0; c < 256; c++) { + mdamap[c][0][0] = mdamap[c][1][0] = mdamap[c][1][1] = 0; + + if (c & 8) + mdamap[c][0][1] = 0xf; + else + mdamap[c][0][1] = 0x7; + } + + mdamap[0x70][0][1] = 0; + mdamap[0x70][0][0] = mdamap[0x70][1][0] = mdamap[0x70][1][1] = 0xf; + mdamap[0xF0][0][1] = 0; + mdamap[0xF0][0][0] = mdamap[0xF0][1][0] = mdamap[0xF0][1][1] = 0xf; + mdamap[0x78][0][1] = 7; + mdamap[0x78][0][0] = mdamap[0x78][1][0] = mdamap[0x78][1][1] = 0xf; + mdamap[0xF8][0][1] = 7; + mdamap[0xF8][0][0] = mdamap[0xF8][1][0] = mdamap[0xF8][1][1] = 0xf; + mdamap[0x00][0][1] = mdamap[0x00][1][1] = 0; + mdamap[0x08][0][1] = mdamap[0x08][1][1] = 0; + mdamap[0x80][0][1] = mdamap[0x80][1][1] = 0; + mdamap[0x88][0][1] = mdamap[0x88][1][1] = 0; + + v6355->display_type = device_get_config_int("display_type"); + v6355->revision = device_get_config_int("composite_type"); + + v6355->vram = malloc(0x4000); + + cga_comp_init(v6355->revision); + + timer_add(&v6355->timer, v6355_poll, v6355, 1); + + mem_mapping_add(&v6355->mapping, 0xb8000, 0x08000, + v6355_read, NULL, NULL, v6355_write, NULL, NULL, NULL, + MEM_MAPPING_EXTERNAL, v6355); + + io_sethandler(0x03d0, 0x0010, + v6355_in, NULL, NULL, v6355_out, NULL, NULL, + v6355); + + v6355->rgb_type = device_get_config_int("rgb_type"); + cga_palette = (v6355->rgb_type << 1); + cgapal_rebuild(); + update_cga16_color(v6355->cgamode); + + v6355->double_type = device_get_config_int("double_type"); + + for (uint16_t i = 0; i < 256; i++) { + for (uint16_t j = 0; j < 256; j++) { + interp_lut[0][i][j] = v6355_interpolate_srgb(i, j, 0.5); + interp_lut[1][i][j] = v6355_interpolate_linear(i, j, 0.5); + } + } + + switch(device_get_config_int("font")) { + case 0: + loadfont(FONT_IBM_MDA_437_PATH, 0); + break; + case 1: + loadfont(FONT_IBM_MDA_437_NORDIC_PATH, 0); + break; + case 4: + loadfont(FONT_TULIP_DGA_PATH, 0); + break; + } + + monitors[monitor_index_global].mon_composite = (v6355->display_type == V6355_COMPOSITE); + + return v6355; +} + +static void +v6355_close(void *priv) { + v6355_t *v6355 = (v6355_t *) priv; + + free(v6355->vram); + free(v6355); +} + +static void +v6355_speed_changed(void *priv) { + v6355_t *v6355 = (v6355_t *) priv; + + v6355_recalctimings(v6355); +} + +// clang-format off +const device_config_t v6355_config[] = { + { + .name = "display_type", + .description = "Display type", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = V6355_RGB, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "RGB", .value = V6355_RGB }, + { .description = "Composite", .value = V6355_COMPOSITE }, + { .description = "True color", .value = V6355_TRUECOLOR }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { + .name = "composite_type", + .description = "Composite type", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = COMPOSITE_OLD, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "Old", .value = COMPOSITE_OLD }, + { .description = "New", .value = COMPOSITE_NEW }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { + .name = "rgb_type", + .description = "RGB type", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = 5, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "Color (generic)", .value = 0 }, + { .description = "Green Monochrome", .value = 1 }, + { .description = "Amber Monochrome", .value = 2 }, + { .description = "Gray Monochrome", .value = 3 }, + { .description = "Color (no brown)", .value = 4 }, + { .description = "Color (IBM 5153)", .value = 5 }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { + .name = "double_type", + .description = "Line doubling type", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = DOUBLE_NONE, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "None", .value = DOUBLE_NONE }, + { .description = "Simple doubling", .value = DOUBLE_SIMPLE }, + { .description = "sRGB interpolation", .value = DOUBLE_INTERPOLATE_SRGB }, + { .description = "Linear interpolation", .value = DOUBLE_INTERPOLATE_LINEAR }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { + .name = "font", + .description = "Font", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = 0, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "US (CP 437)", .value = 0 }, + { .description = "IBM Nordic (CP 437-Nordic)", .value = 1 }, + { .description = "Tulip DGA", .value = 4 }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { .name = "", .description = "", .type = CONFIG_END } +}; +// clang-format on + +const device_t v6355d_device = { + .name = "Yamaha V6355D", + .internal_name = "v6355d", + .flags = DEVICE_ISA, + .local = 0, + .init = v6355_standalone_init, + .close = v6355_close, + .reset = NULL, + .available = NULL, + .speed_changed = v6355_speed_changed, + .force_redraw = NULL, + .config = v6355_config +}; diff --git a/src/video/vid_chips_69000.c b/src/video/vid_chips_69000.c index 70b2b9e16..c63bfc70a 100644 --- a/src/video/vid_chips_69000.c +++ b/src/video/vid_chips_69000.c @@ -1102,10 +1102,8 @@ chips_69000_recalctimings(svga_t *svga) svga->rowoffset |= (svga->crtc[0x41] & 0xF) << 8; svga->interlace = !!(svga->crtc[0x70] & 0x80); - - if (svga->hdisp == 1280 && svga->dispend == 1024) { - svga->interlace = 0; - } + if (svga->interlace) + svga->dispend >>= 1; switch (chips->ext_regs[0x81] & 0xF) { default: @@ -1146,6 +1144,8 @@ chips_69000_recalctimings(svga_t *svga) if (svga->dispend > (((chips->flat_panel_regs[0x30] | ((chips->flat_panel_regs[0x35] & 0xF) << 8)) + 1))) { svga->dispend = svga->vsyncstart = svga->vblankstart = ((chips->flat_panel_regs[0x30] | ((chips->flat_panel_regs[0x35] & 0xF) << 8)) + 1); + if (svga->interlace) + svga->dispend >>= 1; } //svga->hdisp = ((chips->flat_panel_regs[0x20] | ((chips->flat_panel_regs[0x25] & 0xF) << 8)) + 1) << 3; //svga->htotal = ((chips->flat_panel_regs[0x23] | ((chips->flat_panel_regs[0x26] & 0xF) << 8)) + 5) << 3; diff --git a/src/video/vid_ega.c b/src/video/vid_ega.c index 26bb38991..5a552ab6d 100644 --- a/src/video/vid_ega.c +++ b/src/video/vid_ega.c @@ -643,9 +643,10 @@ ega_recalctimings(ega_t *ega) crtcconst *= mdiv; } else { if (ega->vidclock) - crtcconst = (ega->seqregs[1] & 1) ? MDACONST : (MDACONST * (9.0 / 8.0)); + crtcconst = (cpuclock / 16257000.0 * (double) (1ULL << 32)); else - crtcconst = (ega->seqregs[1] & 1) ? CGACONST : (CGACONST * (9.0 / 8.0)); + crtcconst = (cpuclock / (157500000.0 / 11.0) * (double) (1ULL << 32)); + crtcconst *= mdiv; } ega->dot_clock = crtcconst / mdiv; diff --git a/src/video/vid_ht216.c b/src/video/vid_ht216.c index 3089ae26d..3ba814870 100644 --- a/src/video/vid_ht216.c +++ b/src/video/vid_ht216.c @@ -698,12 +698,16 @@ ht216_recalctimings(svga_t *svga) if (((ht216->ht_regs[0xc8] & HT_REG_C8_E256) || (svga->gdcreg[5] & 0x40)) && (!svga->lowres || (ht216->ht_regs[0xf6] & 0x80))) { if (high_res_256) { svga->hdisp >>= 1; + svga->dots_per_clock >>= 1; + svga->clock /= 2; ht216->adjust_cursor = 1; } svga->render = svga_render_8bpp_highres; } else if (svga->lowres) { if (high_res_256) { svga->hdisp >>= 1; + svga->dots_per_clock >>= 1; + svga->clock /= 2; ht216->adjust_cursor = 1; svga->render = svga_render_8bpp_highres; } else { @@ -726,6 +730,8 @@ ht216_recalctimings(svga_t *svga) } else if (svga->bpp == 15) { svga->rowoffset <<= 1; svga->hdisp >>= 1; + svga->dots_per_clock >>= 1; + svga->clock /= 2; if ((svga->crtc[0x17] & 0x60) == 0x20) /*Would result in a garbled screen with trailing cursor glitches*/ svga->crtc[0x17] |= 0x40; svga->render = svga_render_15bpp_highres; diff --git a/src/video/vid_mda.c b/src/video/vid_mda.c index be6a8b6b8..184ad7fdd 100644 --- a/src/video/vid_mda.c +++ b/src/video/vid_mda.c @@ -130,8 +130,8 @@ mda_recalctimings(mda_t *mda) double _dispontime; double _dispofftime; double disptime; - disptime = mda->crtc[MDA_CRTC_HTOTAL] + 1; - _dispontime = mda->crtc[MDA_CRTC_HDISP]; + disptime = (mda->crtc[MDA_CRTC_HTOTAL] + 1); + _dispontime = (mda->crtc[MDA_CRTC_HDISP]); _dispofftime = disptime - _dispontime; _dispontime *= MDACONST; _dispofftime *= MDACONST; diff --git a/src/video/vid_pcjr.c b/src/video/vid_pcjr.c index b4a2d24db..6cdc5b783 100644 --- a/src/video/vid_pcjr.c +++ b/src/video/vid_pcjr.c @@ -719,4 +719,6 @@ pcjr_vid_init(pcjr_t *pcjr) else cga_palette = (display_type << 1); cgapal_rebuild(); + + monitors[monitor_index_global].mon_composite = !!pcjr->composite; } diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index 7b1535878..3704df946 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -24,6 +24,7 @@ #include #include #include +#include #define HAVE_STDARG_H #include <86box/86box.h> #include <86box/device.h> @@ -389,6 +390,8 @@ typedef struct s3_t { int color_16bit; atomic_int busy, force_busy; + bool color_key_enabled; + uint8_t thread_run, serialport; void *i2c, *ddc; @@ -2614,10 +2617,89 @@ s3_hwcursor_draw(svga_t *svga, int displine) } \ } while (0) + +static bool +s3_trio64v_colorkey(s3_t* s3, uint32_t x, uint32_t y) +{ + svga_t* svga = &s3->svga; + uint8_t comp_r = 0, comp_g = 0, comp_b = 0; + uint8_t r = 0, g = 0, b = 0; + uint8_t bytes_per_pel = 1; + uint8_t shift = ((s3->streams.chroma_ctrl >> 24) & 7) ^ 7; + bool is15bpp = false; + + uint32_t base_addr = svga->memaddr_latch; + uint32_t stride = s3->streams.pri_stride; + + if (!s3->color_key_enabled) + return true; + + if (y > 2048) + return true; + if (!(s3->streams.chroma_ctrl & (1 << 28))) { + return true; + } + + comp_r = (s3->streams.chroma_ctrl >> 16) & 0xFF; + comp_g = (s3->streams.chroma_ctrl >> 8) & 0xFF; + comp_b = (s3->streams.chroma_ctrl) & 0xFF; + + if (svga->render == svga_render_32bpp_highres) bytes_per_pel = 4; + if (svga->render == svga_render_24bpp_highres) bytes_per_pel = 3; + if (svga->render == svga_render_16bpp_highres) bytes_per_pel = 2; + if (svga->render == svga_render_15bpp_highres) { bytes_per_pel = 2; is15bpp = true; } + + switch (bytes_per_pel) { + case 1: { + uint8_t index = svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + r = svga->vgapal[index].r << 2; + g = svga->vgapal[index].g << 2; + b = svga->vgapal[index].b << 2; + break; + } + case 2: { + uint16_t col = *(uint16_t*)&svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + if (is15bpp) { + r = ((col >> 10) & 0x1f) << 3; + g = ((col >> 5) & 0x1f) << 3; + b = (col & 0x1f) << 3; + } else { + r = ((col >> 11) & 0x1f) << 3; + g = ((col >> 5) & 0x3f) << 2; + b = (col & 0x1f) << 3; + } + break; + } + case 3: { + uint8_t *col = &svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + r = col[0]; + g = col[1]; + b = col[2]; + break; + } + case 4: { + uint32_t col = *(uint32_t*)&svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + r = (col >> 16) & 0xFF; + g = (col >> 8) & 0xFF; + b = col & 0xFF; + break; + } + } + + r >>= shift; + g >>= shift; + b >>= shift; + comp_r >>= shift; + comp_g >>= shift; + comp_b >>= shift; + + return !!(r == comp_r && g == comp_g && b == comp_b); +} + static void s3_trio64v_overlay_draw(svga_t *svga, int displine) { - const s3_t *s3 = (s3_t *) svga->priv; + s3_t *s3 = (s3_t *) svga->priv; int offset = (s3->streams.sec_x - s3->streams.pri_x) + 1; int r[8]; int g[8]; @@ -2638,7 +2720,10 @@ s3_trio64v_overlay_draw(svga_t *svga, int displine) OVERLAY_SAMPLE(); for (int x = 0; x < x_size; x++) { - *p++ = r[x_read] | (g[x_read] << 8) | (b[x_read] << 16); + if (s3_trio64v_colorkey(s3, offset + x, displine - svga->y_add)) + *p++ = r[x_read] | (g[x_read] << 8) | (b[x_read] << 16); + else + p++; svga->overlay_latch.h_acc += s3->streams.k1_horiz_scale; if (svga->overlay_latch.h_acc >= 0) { @@ -2860,7 +2945,7 @@ s3_out(uint16_t addr, uint8_t val, void *priv) switch (addr) { case 0x3c2: - if ((s3->chip == S3_VISION964) || (s3->chip == S3_VISION968) || (s3->chip == S3_86C928)) { + if ((s3->chip == S3_VISION964) || (s3->chip == S3_VISION968)) { if ((s3->card_type != S3_SPEA_MERCURY_P64V) && (s3->card_type != S3_MIROVIDEO40SV_ERGO_968)) { if (((val >> 2) & 3) != 3) icd2061_write(svga->clock_gen, (val >> 2) & 3); @@ -3131,7 +3216,10 @@ s3_out(uint16_t addr, uint8_t val, void *priv) break; case 0x42: - if ((s3->chip == S3_VISION964) || (s3->chip == S3_VISION968) || (s3->chip == S3_86C928)) { + if (((svga->miscout >> 2) & 3) == 3) + s3_log("[%04X:%08X]: Write CRTC%02x=%02x.\n", CS, cpu_state.pc, svga->crtcreg, svga->crtc[svga->crtcreg]); + + if ((s3->chip == S3_VISION964) || (s3->chip == S3_VISION968)) { if (((svga->miscout >> 2) & 3) == 3) icd2061_write(svga->clock_gen, svga->crtc[0x42] & 0x0f); } @@ -3537,9 +3625,15 @@ s3_recalctimings(svga_t *svga) svga->rowoffset |= 0x100; } else if (svga->crtc[0x43] & 0x04) svga->rowoffset |= 0x100; + if (!svga->rowoffset) svga->rowoffset = 0x100; + if ((((svga->miscout >> 2) & 3) == 3) && (s3->chip < S3_TRIO32)) + clk_sel = svga->crtc[0x42] & 0x0f; + + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clk_sel, svga->clock_gen); + if ((s3->chip == S3_VISION964) || (s3->chip == S3_86C928)) { if (s3->card_type == S3_ELSAWIN2KPROX_964) ibm_rgb528_recalctimings(svga->ramdac, svga); @@ -3555,20 +3649,17 @@ s3_recalctimings(svga_t *svga) } else svga->interlace = !!(svga->crtc[0x42] & 0x20); - if ((((svga->miscout >> 2) & 3) == 3) && (s3->chip < S3_TRIO32)) - clk_sel = svga->crtc[0x42] & 0x0f; + if (s3->chip >= S3_TRIO32) { + switch (svga->crtc[0x67] >> 4) { + case 3: + case 5: + case 7: + svga->clock /= 2; + break; - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clk_sel, svga->clock_gen); - - switch (svga->crtc[0x67] >> 4) { - case 3: - case 5: - case 7: - svga->clock /= 2; - break; - - default: - break; + default: + break; + } } if (s3->chip <= S3_86C805) { @@ -3656,6 +3747,7 @@ s3_recalctimings(svga_t *svga) case S3_86C928: switch (s3->card_type) { case S3_METHEUS_86C928: + s3_log("928 8bpp: ClockSel=%02x, width=%d, hdisp=%d, dotsperclock=%d.\n", clk_sel, s3->width, svga->hdisp, svga->dots_per_clock); switch (s3->width) { case 1280: /*Account for the 1280x1024 resolution*/ switch (svga->hdisp) { @@ -3824,8 +3916,10 @@ s3_recalctimings(svga_t *svga) switch (s3->card_type) { case S3_METHEUS_86C928: if (!s3->color_16bit) { + s3_log("928 15bpp: ClockSel=%02x, width=%d, hdisp=%d, dotsperclock=%d.\n", clk_sel, s3->width, svga->hdisp, svga->dots_per_clock); svga->hdisp <<= 1; svga->dots_per_clock <<= 1; + svga->clock *= 2.0; } switch (svga->hdisp) { /*This might be a driver issue*/ case 800: @@ -3995,8 +4089,10 @@ s3_recalctimings(svga_t *svga) case S3_86C928: switch (s3->card_type) { case S3_METHEUS_86C928: + s3_log("928 16bpp: ClockSel=%02x, width=%d, hdisp=%d, dotsperclock=%d.\n", clk_sel, s3->width, svga->hdisp, svga->dots_per_clock); svga->hdisp <<= 1; svga->dots_per_clock <<= 1; + svga->clock *= 2.0; switch (svga->hdisp) { /*This might be a driver issue*/ case 800: s3->width = 1024; @@ -4420,11 +4516,13 @@ s3_trio64v_recalctimings(svga_t *svga) svga->render = svga_render_15bpp_highres; svga->hdisp >>= 1; svga->dots_per_clock >>= 1; + svga->clock /= 2.0; break; case 16: svga->render = svga_render_16bpp_highres; svga->hdisp >>= 1; svga->dots_per_clock >>= 1; + svga->clock /= 2.0; break; case 24: svga->render = svga_render_24bpp_highres; @@ -4481,9 +4579,11 @@ s3_trio64v_recalctimings(svga_t *svga) break; case 3: /*KRGB-16 (1.5.5.5)*/ svga->render = svga_render_15bpp_highres; + svga->clock /= 2.0; break; case 5: /*RGB-16 (5.6.5)*/ svga->render = svga_render_16bpp_highres; + svga->clock /= 2.0; break; case 6: /*RGB-24 (8.8.8)*/ svga->render = svga_render_24bpp_highres; @@ -10166,6 +10266,7 @@ s3_init(const device_t *info) s3_in, s3_out, s3_hwcursor_draw, s3_trio64v_overlay_draw); + s3->color_key_enabled = !!device_get_config_int("colorkey"); } else { svga_init(info, svga, s3, vram_size, s3_recalctimings, @@ -10385,8 +10486,8 @@ s3_init(const device_t *info) s3->packed_mmio = 0; svga->crtc[0x5a] = 0x0a; svga->ramdac = device_add(&bt485_ramdac_device); - svga->clock_gen = device_add(&icd2061_device); - svga->getclock = icd2061_getclock; + svga->clock_gen = device_add(&ics2494an_305_device); + svga->getclock = ics2494_getclock; break; case S3_SPEA_MERCURY_LITE_PCI: @@ -10910,6 +11011,68 @@ static const device_config_t s3_phoenix_trio32_config[] = { { .name = "", .description = "", .type = CONFIG_END } }; +static const device_config_t s3_phoenix_trio32_v_config[] = { + { + .name = "memory", + .description = "Memory size", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = 2, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "512 KB", .value = 0 }, + { .description = "1 MB", .value = 1 }, + { .description = "2 MB", .value = 2 }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { + .name = "colorkey", + .description = "Video chroma-keying", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, + { .name = "", .description = "", .type = CONFIG_END } +}; + +static const device_config_t s3_trio64v_config[] = { + { + .name = "memory", + .description = "Memory size", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = 4, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "1 MB", .value = 1 }, + { .description = "2 MB", .value = 2 }, + { .description = "4 MB", .value = 4 }, + { .description = "" } + }, + .bios = { { 0 } } + }, + { + .name = "colorkey", + .description = "Video chroma-keying", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, + { .name = "", .description = "", .type = CONFIG_END } +}; + static const device_config_t s3_standard_config[] = { { .name = "memory", @@ -11514,7 +11677,7 @@ const device_t s3_stb_powergraph_64_video_vlb_device = { .available = s3_stb_powergraph_64_video_available, .speed_changed = s3_speed_changed, .force_redraw = s3_force_redraw, - .config = s3_phoenix_trio32_config + .config = s3_phoenix_trio32_v_config }; const device_t s3_phoenix_trio64vplus_onboard_pci_device = { @@ -11528,7 +11691,7 @@ const device_t s3_phoenix_trio64vplus_onboard_pci_device = { .available = NULL, .speed_changed = s3_speed_changed, .force_redraw = s3_force_redraw, - .config = s3_standard_config + .config = s3_trio64v_config }; const device_t s3_phoenix_trio64vplus_pci_device = { @@ -11542,7 +11705,7 @@ const device_t s3_phoenix_trio64vplus_pci_device = { .available = s3_phoenix_trio64vplus_available, .speed_changed = s3_speed_changed, .force_redraw = s3_force_redraw, - .config = s3_standard_config + .config = s3_trio64v_config }; const device_t s3_cardex_trio64vplus_pci_device = { @@ -11556,7 +11719,7 @@ const device_t s3_cardex_trio64vplus_pci_device = { .available = s3_cardex_trio64vplus_available, .speed_changed = s3_speed_changed, .force_redraw = s3_force_redraw, - .config = s3_standard_config + .config = s3_trio64v_config }; const device_t s3_phoenix_vision864_vlb_device = { @@ -11696,7 +11859,7 @@ const device_t s3_trio64v2_dx_pci_device = { .available = s3_trio64v2_dx_available, .speed_changed = s3_speed_changed, .force_redraw = s3_force_redraw, - .config = s3_standard_config + .config = s3_trio64v_config }; const device_t s3_trio64v2_dx_onboard_pci_device = { @@ -11710,5 +11873,5 @@ const device_t s3_trio64v2_dx_onboard_pci_device = { .available = NULL, .speed_changed = s3_speed_changed, .force_redraw = s3_force_redraw, - .config = s3_standard_config + .config = s3_trio64v_config }; diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c index 87c2b4cd6..13a88a0c5 100644 --- a/src/video/vid_s3_virge.c +++ b/src/video/vid_s3_virge.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #define HAVE_STDARG_H #include <86box/86box.h> @@ -377,6 +378,8 @@ typedef struct virge_t { uint32_t dma_mmio_addr; uint32_t dma_data_type; + bool color_key_enabled; + int pci; int is_agp; @@ -911,6 +914,7 @@ s3_virge_recalctimings(svga_t *svga) if ((virge->chip != S3_VIRGEVX) && (virge->chip < S3_VIRGEGX2)) { svga->hdisp >>= 1; svga->dots_per_clock >>= 1; + svga->clock /= 2.0; } break; case 16: @@ -918,6 +922,7 @@ s3_virge_recalctimings(svga_t *svga) if ((virge->chip != S3_VIRGEVX) && (virge->chip < S3_VIRGEGX2)) { svga->hdisp >>= 1; svga->dots_per_clock >>= 1; + svga->clock /= 2.0; } break; case 24: @@ -1010,9 +1015,13 @@ s3_virge_recalctimings(svga_t *svga) break; case 3: /*KRGB-16 (1.5.5.5)*/ svga->render = svga_render_15bpp_highres; + if (virge->chip != S3_VIRGEVX) + svga->clock /= 2.0; break; case 5: /*RGB-16 (5.6.5)*/ svga->render = svga_render_16bpp_highres; + if (virge->chip != S3_VIRGEVX) + svga->clock /= 2.0; break; case 6: /*RGB-24 (8.8.8)*/ svga->render = svga_render_24bpp_highres; @@ -4791,6 +4800,132 @@ s3_virge_hwcursor_draw(svga_t *svga, int displine) } \ } while (0) + +static bool +s3_virge_colorkey(virge_t* virge, uint32_t x, uint32_t y) +{ + svga_t* svga = &virge->svga; + uint8_t comp_r = 0, comp_g = 0, comp_b = 0; + uint8_t comp_r_h = 0, comp_g_h = 0, comp_b_h = 0; + uint8_t r = 0, g = 0, b = 0; + uint8_t bytes_per_pel = 1; + uint8_t shift = ((virge->streams.chroma_ctrl >> 24) & 7) ^ 7; + bool is15bpp = false; + + uint32_t base_addr = svga->memaddr_latch; + uint32_t stride = (virge->chip < S3_VIRGEGX2) ? virge->streams.pri_stride : (svga->rowoffset << 3); + + bool color_key = false; + bool alpha_key = false; + + if (!virge->color_key_enabled) + return true; + + if (y > 2048) + return true; + + if (virge->chip >= S3_VIRGEGX2 && ((virge->streams.chroma_ctrl >> 29) & 3) == 0) + return true; + else if (!(virge->streams.chroma_ctrl & (1 << 28))) + return true; + + comp_r = (virge->streams.chroma_ctrl >> 16) & 0xFF; + comp_g = (virge->streams.chroma_ctrl >> 8) & 0xFF; + comp_b = (virge->streams.chroma_ctrl) & 0xFF; + + comp_r_h = (virge->streams.chroma_upper_bound >> 16) & 0xFF; + comp_g_h = (virge->streams.chroma_upper_bound >> 8) & 0xFF; + comp_b_h = (virge->streams.chroma_upper_bound) & 0xFF; + + if (svga->render == svga_render_32bpp_highres) bytes_per_pel = 4; + if (svga->render == svga_render_24bpp_highres) bytes_per_pel = 3; + if (svga->render == svga_render_16bpp_highres) bytes_per_pel = 2; + if (svga->render == svga_render_15bpp_highres) { bytes_per_pel = 2; is15bpp = true; } + + if (virge->chip >= S3_VIRGEDX && bytes_per_pel == 1) { + // TODO: Is this right for GX2 and later? Windows 2000 sources indicate that this is the format for alpha keying, but it's never used. + + /* Note for DX/GX: + If Bit 28 of Color/Chroma Key Control is 1: + Bit 29 = 0: Select color keying + Bit 29 = 1: Select alpha keying (lowest 8 bits of register used for compare) + */ + uint8_t index = virge->streams.chroma_ctrl & 0xFF; + alpha_key = (virge->chip < S3_VIRGEGX2) ? (virge->streams.chroma_ctrl & (1 << 29)) : ((virge->streams.chroma_ctrl >> 29) & 3) == 1; + + if (alpha_key) { + comp_r = comp_g = comp_b = index; + comp_r_h = comp_g_h = comp_b_h = index; + } + } + + if (alpha_key) { + uint8_t index = svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + return !!((index >> shift) == (comp_r >> shift)); + } else { + switch (bytes_per_pel) { + case 1: { + uint8_t index = svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + r = svga->vgapal[index].r << 2; + g = svga->vgapal[index].g << 2; + b = svga->vgapal[index].b << 2; + break; + } + case 2: { + uint16_t col = *(uint16_t*)&svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + if (is15bpp) { + r = ((col >> 10) & 0x1f) << 3; + g = ((col >> 5) & 0x1f) << 3; + b = (col & 0x1f) << 3; + } else { + r = ((col >> 11) & 0x1f) << 3; + g = ((col >> 5) & 0x3f) << 2; + b = (col & 0x1f) << 3; + } + break; + } + case 3: { + uint8_t *col = &svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + r = col[0]; + g = col[1]; + b = col[2]; + break; + } + case 4: { + uint32_t col = *(uint32_t*)&svga->vram[(base_addr + (stride * y) + x * bytes_per_pel) & svga->vram_mask]; + r = (col >> 16) & 0xFF; + g = (col >> 8) & 0xFF; + b = col & 0xFF; + break; + } + } + + r >>= shift; + g >>= shift; + b >>= shift; + comp_r >>= shift; + comp_g >>= shift; + comp_b >>= shift; + comp_r_h >>= shift; + comp_g_h >>= shift; + comp_b_h >>= shift; + + if (virge->chip < S3_VIRGEGX2) { + color_key = true; + } else { + color_key = ((virge->streams.chroma_ctrl >> 29) & 3) == 2; + } + + if (color_key) { + return !!(r == comp_r && g == comp_g && b == comp_b); + } else { + return !!(r >= comp_r && r <= comp_r_h && g >= comp_g && g <= comp_g_h && b >= comp_b && b <= comp_b_h); + } + } + + return true; +} + static void s3_virge_overlay_draw(svga_t *svga, int displine) { @@ -4824,7 +4959,10 @@ s3_virge_overlay_draw(svga_t *svga, int displine) OVERLAY_SAMPLE(); for (x = 0; x < x_size; x++) { - *p++ = r[x_read] | (g[x_read] << 8) | (b[x_read] << 16); + if (s3_virge_colorkey(virge, offset + x, displine - svga->y_add)) + *p++ = r[x_read] | (g[x_read] << 8) | (b[x_read] << 16); + else + p++; svga->overlay_latch.h_acc += virge->streams.k1_horiz_scale; if (svga->overlay_latch.h_acc >= 0) { @@ -5156,6 +5294,7 @@ s3_virge_init(const device_t *info) else virge->memory_size = device_get_config_int("memory"); + virge->color_key_enabled = !!device_get_config_int("colorkey"); virge->onboard = !!(info->local & 0x100); if (!virge->onboard) @@ -5539,6 +5678,17 @@ static const device_config_t s3_virge_config[] = { .selection = { { 0 } }, .bios = { { 0 } } }, + { + .name = "colorkey", + .description = "Video chroma-keying", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, { .name = "dithering", .description = "Dithering", @@ -5580,6 +5730,17 @@ static const device_config_t s3_virge_stb_config[] = { .selection = { { 0 } }, .bios = { { 0 } } }, + { + .name = "colorkey", + .description = "Video chroma-keying", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, { .name = "dithering", .description = "Dithering", @@ -5597,6 +5758,22 @@ static const device_config_t s3_virge_stb_config[] = { static const device_config_t s3_virge_357_config[] = { // clang-format off { + .name = "memory", + .description = "Memory size", + .type = CONFIG_SELECTION, + .default_string = NULL, + .default_int = 4, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "2 MB", .value = 2 }, + { .description = "4 MB", .value = 4 }, + { .description = "" } + }, + .bios = { { 0 } } + }, + + { .name = "bilinear", .description = "Bilinear filtering", .type = CONFIG_BINARY, @@ -5606,6 +5783,17 @@ static const device_config_t s3_virge_357_config[] = { .selection = { { 0 } }, .bios = { { 0 } } }, + { + .name = "colorkey", + .description = "Video chroma-keying", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, { .name = "dithering", .description = "Dithering", @@ -5648,6 +5836,17 @@ static const device_config_t s3_trio3d2x_config[] = { .selection = { { 0 } }, .bios = { { 0 } } }, + { + .name = "colorkey", + .description = "Video chroma-keying", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, { .name = "dithering", .description = "Dithering", @@ -5831,20 +6030,6 @@ const device_t s3_virge_357_agp_device = { .config = s3_virge_357_config }; -const device_t s3_diamond_stealth_4000_pci_device = { - .name = "S3 ViRGE/GX2 (Diamond Stealth 3D 4000) PCI", - .internal_name = "stealth3d_4000_pci", - .flags = DEVICE_PCI, - .local = S3_DIAMOND_STEALTH3D_4000, - .init = s3_virge_init, - .close = s3_virge_close, - .reset = s3_virge_reset, - .available = s3_virge_357_diamond_available, - .speed_changed = s3_virge_speed_changed, - .force_redraw = s3_virge_force_redraw, - .config = s3_virge_357_config -}; - const device_t s3_diamond_stealth_4000_agp_device = { .name = "S3 ViRGE/GX2 (Diamond Stealth 3D 4000) AGP", .internal_name = "stealth3d_4000_agp", diff --git a/src/video/vid_sigma.c b/src/video/vid_sigma.c index d67b13c0d..9f71773ad 100644 --- a/src/video/vid_sigma.c +++ b/src/video/vid_sigma.c @@ -234,6 +234,8 @@ sigma_out(uint16_t addr, uint8_t val, void *priv) case 0x2D8: sigma->sigmamode = val; + sigma->fullchange = changeframecount; + sigma_recalctimings(sigma); return; case 0x2D9: sigma->sigma_ctl = val; @@ -392,6 +394,7 @@ sigma_recalctimings(sigma_t *sigma) double disptime; double _dispontime; double _dispofftime; + double crtcconst = (cpuclock / 22440000.0 * (double) (1ULL << 32)) * 8.0; if (sigma->sigmamode & MODE_80COLS) { disptime = (sigma->crtc[0] + 1) << 1; @@ -402,8 +405,8 @@ sigma_recalctimings(sigma_t *sigma) } _dispofftime = disptime - _dispontime; - _dispontime *= CGACONST; - _dispofftime *= CGACONST; + _dispontime *= crtcconst; + _dispofftime *= crtcconst; sigma->dispontime = (uint64_t) (_dispontime); sigma->dispofftime = (uint64_t) (_dispofftime); } diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index caed7113f..21ea23c93 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -1050,7 +1050,7 @@ svga_recalctimings(svga_t *svga) } if (xga_active && (svga->xga != NULL)) { if (xga->on) - crtcconst_xga = svga->clock_xga * svga->char_width; + crtcconst_xga = svga->clock_xga * 8; } #ifdef ENABLE_SVGA_LOG @@ -1146,6 +1146,7 @@ svga_recalctimings(svga_t *svga) if (dev->dispofftime < TIMER_USEC) dev->dispofftime = TIMER_USEC; + svga->monitor->mon_interlace = !!dev->interlace; ibm8514_set_poll(svga); } else svga_set_poll(svga); @@ -1164,6 +1165,7 @@ svga_recalctimings(svga_t *svga) if (xga->dispofftime < TIMER_USEC) xga->dispofftime = TIMER_USEC; + svga->monitor->mon_interlace = !!xga->interlace; xga_set_poll(svga); } else svga_set_poll(svga); @@ -1182,6 +1184,7 @@ svga_recalctimings(svga_t *svga) if (dev->dispofftime < TIMER_USEC) dev->dispofftime = TIMER_USEC; + svga->monitor->mon_interlace = !!dev->interlace; ibm8514_set_poll(svga); } else if (xga->on) { _dispofftime_xga = disptime_xga - _dispontime_xga; @@ -1195,6 +1198,7 @@ svga_recalctimings(svga_t *svga) if (xga->dispofftime < TIMER_USEC) xga->dispofftime = TIMER_USEC; + svga->monitor->mon_interlace = !!xga->interlace; xga_set_poll(svga); } else svga_set_poll(svga); @@ -1247,6 +1251,10 @@ svga_recalctimings(svga_t *svga) else svga->hdisp >>= 1; } + + svga->monitor->mon_interlace = 0; + if (!svga->override && svga->interlace) + svga->monitor->mon_interlace = 1; } static void diff --git a/src/video/vid_table.c b/src/video/vid_table.c index 493251407..db05e13ab 100644 --- a/src/video/vid_table.c +++ b/src/video/vid_table.c @@ -114,6 +114,7 @@ video_cards[] = { { .device = &et4000_isa_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &v7_vga_1024i_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &wy700_device, .flags = VIDEO_FLAG_TYPE_NONE }, + { .device = &v6355d_device, .flags = VIDEO_FLAG_TYPE_NONE }, /* ISA16 */ { .device = &mach64gx_isa_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &gd5420_isa_device, .flags = VIDEO_FLAG_TYPE_NONE }, @@ -229,7 +230,6 @@ video_cards[] = { { .device = &s3_diamond_stealth_2000pro_pci_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &s3_virge_385_pci_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &s3_virge_357_pci_device, .flags = VIDEO_FLAG_TYPE_NONE }, - { .device = &s3_diamond_stealth_4000_pci_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &s3_trio3d2x_pci_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &millennium_device, .flags = VIDEO_FLAG_TYPE_NONE }, { .device = &millennium_ii_device, .flags = VIDEO_FLAG_TYPE_NONE }, @@ -335,6 +335,9 @@ video_prepare(void) /* Do an inform on the default values, so that that there's some sane values initialized even if the device init function does not do an inform of its own. */ video_inform_monitor(VIDEO_FLAG_TYPE_SPECIAL, &timing_default, i); + + monitors[i].mon_interlace = 0; + monitors[i].mon_composite = 0; } } diff --git a/src/video/vid_tandy.c b/src/video/vid_tandy.c index 7d9b5af1a..53c5b0dfd 100644 --- a/src/video/vid_tandy.c +++ b/src/video/vid_tandy.c @@ -762,6 +762,8 @@ tandy_vid_init(tandy_t *dev) tandy_vid_in, NULL, NULL, tandy_vid_out, NULL, NULL, dev); dev->vid = vid; + + monitors[monitor_index_global].mon_composite = !!vid->composite; } const device_config_t vid_config[] = { diff --git a/src/video/vid_voodoo_banshee_blitter.c b/src/video/vid_voodoo_banshee_blitter.c index cf2824bba..ad92d580f 100644 --- a/src/video/vid_voodoo_banshee_blitter.c +++ b/src/video/vid_voodoo_banshee_blitter.c @@ -1,7 +1,5 @@ /*Current issues : - - missing screen->screen scaled blits with format conversion - missing YUV blits (YUV -> 32-bit, 24-bit, or 16-bit RGB now done) - - missing linestyle - missing wait for vsync - missing reversible lines diff --git a/vcpkg.json b/vcpkg.json index 20b783add..52e30dd51 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "86box", - "version-string": "5.0", + "version-string": "5.0.1", "homepage": "https://86box.net/", "documentation": "https://86box.readthedocs.io/", "license": "GPL-2.0-or-later",