diff --git a/src/include/86box/vid_8514a.h b/src/include/86box/vid_8514a.h index 696b640bc..92960f912 100644 --- a/src/include/86box/vid_8514a.h +++ b/src/include/86box/vid_8514a.h @@ -24,6 +24,19 @@ #define INT_FIFO_EMP (1 << 3) #define INT_MASK 0xf +typedef enum { + IBM_8514A_TYPE = 0, + ATI_38800_TYPE, + ATI_68800_TYPE, + TYPE_MAX +} ibm8514_card_type; + +typedef enum { + IBM = 0, + ATI, + EXTENSIONS_MAX +} ibm8514_extensions_t; + typedef struct hwcursor8514_t { int ena; int x; @@ -58,7 +71,7 @@ typedef struct ibm8514_t { int force_old_addr; int type; - int local; + ibm8514_card_type local; int bpp; int on; int accel_bpp; @@ -246,7 +259,8 @@ typedef struct ibm8514_t { int pitch; int ext_pitch; int ext_crt_pitch; - int extensions; + ibm8514_extensions_t extensions; + int onboard; int linear; uint32_t vram_amount; int vram_512k_8514; @@ -263,9 +277,9 @@ typedef struct ibm8514_t { } ibm8514_t; -#define IBM_8514A (((dev->local & 0xff) == 0x00) && (dev->extensions == 0x00)) -#define ATI_8514A_ULTRA (((dev->local & 0xff) == 0x00) && (dev->extensions == 0x01)) -#define ATI_GRAPHICS_ULTRA ((dev->local & 0xff) == 0x01) -#define ATI_MACH32 ((dev->local & 0xff) == 0x02) +#define IBM_8514A (((dev->local & 0xff) == IBM_8514A_TYPE) && (dev->extensions == IBM)) +#define ATI_8514A_ULTRA (((dev->local & 0xff) == IBM_8514A_TYPE) && (dev->extensions == ATI)) +#define ATI_GRAPHICS_ULTRA ((dev->local & 0xff) == ATI_38800_TYPE) +#define ATI_MACH32 ((dev->local & 0xff) == ATI_68800_TYPE) #endif /*VIDEO_8514A_H*/ diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index 3f8476374..72c892af7 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -214,7 +214,7 @@ emu_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) (GetForegroundWindow() == ((HWND) secondaryRenderer->winId()))); } - bool skip = ((nCode < 0) || (nCode != HC_ACTION) || !is_over_window); + bool skip = ((nCode < 0) || (nCode != HC_ACTION) || !is_over_window || (kbd_req_capture && !mouse_capture)); if (skip) return CallNextHookEx(NULL, nCode, wParam, lParam); diff --git a/src/video/vid_8514a.c b/src/video/vid_8514a.c index ba4641259..02f22ed54 100644 --- a/src/video/vid_8514a.c +++ b/src/video/vid_8514a.c @@ -3693,10 +3693,10 @@ ibm8514_poll(void *priv) svga->render8514(svga); - svga->x_add = (overscan_x >> 1); + svga->x_add = svga->left_overscan; ibm8514_render_overscan_left(dev, svga); ibm8514_render_overscan_right(dev, svga); - svga->x_add = (overscan_x >> 1); + svga->x_add = svga->left_overscan; if (dev->hwcursor_on) { if (svga->hwcursor_draw) @@ -3796,7 +3796,7 @@ ibm8514_poll(void *priv) dev->dispon = 1; dev->displine = (dev->interlace && dev->oddeven) ? 1 : 0; - svga->x_add = (overscan_x >> 1); + svga->x_add = svga->left_overscan; dev->hwcursor_on = 0; dev->hwcursor_latch = dev->hwcursor; @@ -3966,7 +3966,7 @@ ibm8514_init(const device_t *info) bios_addr = 0xc6000; switch (dev->extensions) { - case 1: + case ATI: if (rom_present(BIOS_MACH8_ROM_PATH)) { mach_t * mach = (mach_t *) calloc(1, sizeof(mach_t)); svga->ext8514 = mach; @@ -3977,13 +3977,14 @@ ibm8514_init(const device_t *info) 0, MEM_MAPPING_EXTERNAL); ati8514_init(svga, svga->ext8514, svga->dev8514); - mach->accel.scratch0 = ((((bios_addr >> 7) - 0x1000) >> 4)); + mach->accel.scratch0 = ((bios_addr >> 7) - 0x1000) >> 4; bios_rom_eeprom = mach->accel.scratch0; if (dev->type & DEVICE_MCA) { 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]); 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); @@ -4067,12 +4068,12 @@ static const device_config_t isa_ext8514_config[] = { .description = "Vendor", .type = CONFIG_SELECTION, .default_string = NULL, - .default_int = 0, + .default_int = IBM, .file_filter = NULL, .spinner = { 0 }, .selection = { - { .description = "IBM", .value = 0 }, - { .description = "ATI", .value = 1 }, + { .description = "IBM", .value = IBM }, + { .description = "ATI", .value = ATI }, { .description = "" } }, .bios = { { 0 } } @@ -4127,12 +4128,12 @@ static const device_config_t mca_ext8514_config[] = { .description = "Vendor", .type = CONFIG_SELECTION, .default_string = NULL, - .default_int = 0, + .default_int = IBM, .file_filter = NULL, .spinner = { 0 }, .selection = { - { .description = "IBM", .value = 0 }, - { .description = "ATI", .value = 1 }, + { .description = "IBM", .value = IBM }, + { .description = "ATI", .value = ATI }, { .description = "" } }, .bios = { { 0 } } @@ -4145,7 +4146,7 @@ const device_t gen8514_isa_device = { .name = "IBM 8514/A clone (ISA)", .internal_name = "8514_isa", .flags = DEVICE_ISA16, - .local = 0, + .local = IBM_8514A_TYPE, .init = ibm8514_init, .close = ibm8514_close, .reset = NULL, @@ -4159,7 +4160,7 @@ const device_t ibm8514_mca_device = { .name = "IBM 8514/A (MCA)", .internal_name = "8514_mca", .flags = DEVICE_MCA, - .local = 0, + .local = IBM_8514A_TYPE, .init = ibm8514_init, .close = ibm8514_close, .reset = NULL, diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index 0b5673d69..f7b5e0915 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -7409,7 +7409,7 @@ const device_t mach8_vga_isa_device = { .name = "ATI Mach8 (ATI Graphics Ultra) (ISA)", .internal_name = "mach8_vga_isa", .flags = DEVICE_ISA, - .local = 1, + .local = ATI_38800_TYPE, .init = mach8_init, .close = mach_close, .reset = mach_reset, @@ -7423,7 +7423,7 @@ const device_t mach32_isa_device = { .name = "ATI Mach32 (ISA)", .internal_name = "mach32_isa", .flags = DEVICE_ISA, - .local = 2, + .local = ATI_68800_TYPE, .init = mach8_init, .close = mach_close, .reset = mach_reset, @@ -7437,7 +7437,7 @@ const device_t mach32_vlb_device = { .name = "ATI Mach32 (VLB)", .internal_name = "mach32_vlb", .flags = DEVICE_VLB, - .local = 2, + .local = ATI_68800_TYPE, .init = mach8_init, .close = mach_close, .reset = mach_reset, @@ -7451,7 +7451,7 @@ const device_t mach32_mca_device = { .name = "ATI Mach32 (MCA)", .internal_name = "mach32_mca", .flags = DEVICE_MCA, - .local = 2, + .local = ATI_68800_TYPE, .init = mach8_init, .close = mach_close, .reset = mach_reset, @@ -7465,7 +7465,7 @@ const device_t mach32_pci_device = { .name = "ATI Mach32 (PCI)", .internal_name = "mach32_pci", .flags = DEVICE_PCI, - .local = 2, + .local = ATI_68800_TYPE, .init = mach8_init, .close = mach_close, .reset = mach_reset, @@ -7479,7 +7479,7 @@ const device_t mach32_onboard_pci_device = { .name = "ATI Mach32 (PCI) On-Board", .internal_name = "mach32_pci_onboard", .flags = DEVICE_PCI, - .local = 2 | 0x100, + .local = ATI_68800_TYPE | 0x100, .init = mach8_init, .close = mach_close, .reset = mach_reset,