diff --git a/src/include/86box/scsi_pcscsi.h b/src/include/86box/scsi_pcscsi.h index 8547aba25..c4dbedeff 100644 --- a/src/include/86box/scsi_pcscsi.h +++ b/src/include/86box/scsi_pcscsi.h @@ -26,6 +26,7 @@ #define SCSI_PCSCSI_H extern const device_t am53c974_pci_device; +extern const device_t am53c974a_pci_device; extern const device_t dc390_pci_device; extern const device_t ncr53c90a_mca_device; diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot index 4dc411f09..54a6bb204 100644 --- a/src/qt/languages/86box.pot +++ b/src/qt/languages/86box.pot @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/ca-ES.po b/src/qt/languages/ca-ES.po index 8f43fb946..08f17e20b 100644 --- a/src/qt/languages/ca-ES.po +++ b/src/qt/languages/ca-ES.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po index 48ae6df56..b8184562f 100644 --- a/src/qt/languages/cs-CZ.po +++ b/src/qt/languages/cs-CZ.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po index 4b37d9666..e88d5c8af 100644 --- a/src/qt/languages/de-DE.po +++ b/src/qt/languages/de-DE.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po index ca65b3695..b99d96819 100644 --- a/src/qt/languages/es-ES.po +++ b/src/qt/languages/es-ES.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po index 01ccac09e..ab630dcc0 100644 --- a/src/qt/languages/fi-FI.po +++ b/src/qt/languages/fi-FI.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po index 04a9c1c10..bf8f59237 100644 --- a/src/qt/languages/fr-FR.po +++ b/src/qt/languages/fr-FR.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po index b783a9ab5..694c61ad2 100644 --- a/src/qt/languages/hr-HR.po +++ b/src/qt/languages/hr-HR.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/hu-HU.po b/src/qt/languages/hu-HU.po index 7e2260029..84889a336 100644 --- a/src/qt/languages/hu-HU.po +++ b/src/qt/languages/hu-HU.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po index d5cbf918e..2ce8571a8 100644 --- a/src/qt/languages/it-IT.po +++ b/src/qt/languages/it-IT.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index 259e134be..47731d6c9 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po index 457f89d0e..29b19f683 100644 --- a/src/qt/languages/ko-KR.po +++ b/src/qt/languages/ko-KR.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po index 378427d85..b24895bf2 100644 --- a/src/qt/languages/nl-NL.po +++ b/src/qt/languages/nl-NL.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po index cf80e50dd..9e6cac667 100644 --- a/src/qt/languages/pl-PL.po +++ b/src/qt/languages/pl-PL.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po index ed2c13f72..94fde8f9e 100644 --- a/src/qt/languages/pt-BR.po +++ b/src/qt/languages/pt-BR.po @@ -1278,8 +1278,8 @@ msgstr "Build" msgid "Version" msgstr "Versão" -msgid "An update to 86Box is available!" -msgstr "Uma atualização do 86Box está disponível!" +msgid "An update to 86Box is available!" +msgstr "Uma atualização do 86Box está disponível!" msgid "Warning" msgstr "Aviso" diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po index 5bf32c78f..df927a72e 100644 --- a/src/qt/languages/pt-PT.po +++ b/src/qt/languages/pt-PT.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po index 91eedb053..305b99068 100644 --- a/src/qt/languages/ru-RU.po +++ b/src/qt/languages/ru-RU.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po index 367c5f06a..5aa01a455 100644 --- a/src/qt/languages/sk-SK.po +++ b/src/qt/languages/sk-SK.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po index 3e1f1c977..593198ae8 100644 --- a/src/qt/languages/sl-SI.po +++ b/src/qt/languages/sl-SI.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/sv-SE.po b/src/qt/languages/sv-SE.po index a311d9947..c423558d6 100644 --- a/src/qt/languages/sv-SE.po +++ b/src/qt/languages/sv-SE.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po index 110637acb..986689463 100644 --- a/src/qt/languages/tr-TR.po +++ b/src/qt/languages/tr-TR.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po index 6caa65ca8..799fa07b7 100644 --- a/src/qt/languages/uk-UA.po +++ b/src/qt/languages/uk-UA.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po index b823f8530..c603fa8fe 100644 --- a/src/qt/languages/vi-VN.po +++ b/src/qt/languages/vi-VN.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po index 6b79358ab..74001fe1e 100644 --- a/src/qt/languages/zh-CN.po +++ b/src/qt/languages/zh-CN.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po index c55a7d34f..a57f8f30b 100644 --- a/src/qt/languages/zh-TW.po +++ b/src/qt/languages/zh-TW.po @@ -1278,7 +1278,7 @@ msgstr "" msgid "Version" msgstr "" -msgid "An update to 86Box is available!" +msgid "An update to 86Box is available!" msgstr "" msgid "Warning" diff --git a/src/scsi/scsi.c b/src/scsi/scsi.c index a2bdc92ce..a02f4e7a5 100644 --- a/src/scsi/scsi.c +++ b/src/scsi/scsi.c @@ -84,6 +84,7 @@ static SCSI_CARD scsi_cards[] = { { &buslogic_445c_device, }, /* PCI */ { &am53c974_pci_device, }, + { &am53c974a_pci_device, }, { &buslogic_958d_pci_device, }, { &ncr53c810_pci_device, }, { &ncr53c815_pci_device, }, diff --git a/src/scsi/scsi_pcscsi.c b/src/scsi/scsi_pcscsi.c index b0563020b..f91eef683 100644 --- a/src/scsi/scsi_pcscsi.c +++ b/src/scsi/scsi_pcscsi.c @@ -141,6 +141,7 @@ enum ESPASCMode { #define CFG1_RESREPT 0x40 +#define TCHI_ESP100A 0x01 #define TCHI_FAS100A 0x04 #define TCHI_AM53C974 0x12 @@ -666,6 +667,7 @@ esp_hard_reset(esp_t *dev) dev->tchi_written = 0; dev->asc_mode = ESP_ASC_MODE_DIS; dev->rregs[ESP_CFG1] = dev->mca ? dev->HostID : 7; + dev->sbac = 1 << 19; esp_log("ESP Reset\n"); @@ -716,7 +718,7 @@ esp_do_dma(esp_t *dev) len = esp_get_tc(dev); - esp_log("ESP SCSI Actual DMA len=%d, cfg3=%02x.\n", len, dev->rregs[ESP_CFG3]); + esp_log("ESP SCSI Actual DMA len=%d, cfg3=%02x, phase=%x.\n", len, dev->rregs[ESP_CFG3], esp_get_phase(dev)); switch (esp_get_phase(dev)) { case STAT_MO: @@ -1316,6 +1318,7 @@ handle_s_without_atn(void *priv) if (esp_select(dev) < 0) return; + esp_log("Selection without ATN.\n"); esp_set_phase(dev, STAT_CD); dev->cmdfifo_cdb_offset = 0; @@ -1333,6 +1336,7 @@ handle_satn(void *priv) if (esp_select(dev) < 0) return; + esp_log("Selection with ATN.\n"); esp_set_phase(dev, STAT_MO); if (dev->dma) @@ -1434,12 +1438,17 @@ esp_reg_read(esp_t *dev, uint32_t saddr) esp_log("Read Interrupt=%02x (old).\n", ret); break; case ESP_TCHI: /* Return the unique id if the value has never been written */ - if (!dev->mca && !dev->tchi_written) - ret = TCHI_AM53C974; - else - ret = dev->rregs[ESP_TCHI]; + if (!dev->tchi_written) { + if (dev->mca) + ret = TCHI_ESP100A; + else + ret = TCHI_AM53C974; - esp_log("Read TCHI Register=%02x.\n", ret); + esp_log("ChipID=%02x.\n", ret); + } else { + ret = dev->rregs[ESP_TCHI]; + esp_log("Read TCHI Register=%02x.\n", ret); + } break; case ESP_RFLAGS: ret = fifo8_num_used(&dev->fifo); @@ -1525,6 +1534,12 @@ esp_reg_write(esp_t *dev, uint32_t saddr, uint32_t val) break; case CMD_BUSRESET: esp_log("ESP Bus Reset val=%02x.\n", (dev->rregs[ESP_CFG1] & CFG1_RESREPT)); + if (dev->mca) { + esp_lower_irq(dev); + esp_hard_reset(dev); + } else + esp_pci_soft_reset(dev); + for (uint8_t i = 0; i < 16; i++) { scsi_device_reset(&scsi_devices[dev->bus][i]); } @@ -1635,6 +1650,7 @@ esp_pci_dma_memory_rw(esp_t *dev, uint8_t *buf, uint32_t len, int dir) if (dev->dma_regs[DMA_WBC] < len) len = dev->dma_regs[DMA_WBC]; + esp_log("DMA Length=%d.\n", len); if (dev->dma_regs[DMA_CMD] & DMA_CMD_MDL) { if (len) { dma_bm_read(dev->dma_regs[DMA_WMAC], (uint8_t *)&DMAPtr, 4, 4); @@ -1681,16 +1697,18 @@ esp_pci_dma_memory_rw(esp_t *dev, uint8_t *buf, uint32_t len, int dir) } } } else { - addr = dev->dma_regs[DMA_WAC]; + if (len) { + addr = dev->dma_regs[DMA_WAC]; - if (expected_dir) - dma_bm_write(addr, buf, len, 4); - else - dma_bm_read(addr, buf, len, 4); + if (expected_dir) + dma_bm_write(addr, buf, len, 4); + else + dma_bm_read(addr, buf, len, 4); - /* update status registers */ - dev->dma_regs[DMA_WBC] -= len; - dev->dma_regs[DMA_WAC] += len; + /* update status registers */ + dev->dma_regs[DMA_WBC] -= len; + dev->dma_regs[DMA_WAC] += len; + } } esp_log("Finished count=%d.\n", dev->dma_regs[DMA_WBC]); @@ -2184,7 +2202,7 @@ esp_pci_read(UNUSED(int func), int addr, void *priv) case 0x07: return esp_pci_regs[0x07] | 0x02; case 0x08: - return 0x10; /*Revision ID*/ + return (dev->local == 1) ? 0 : 0x10; /*Revision ID*/ case 0x09: return 0; /*Programming interface*/ case 0x0A: @@ -2363,7 +2381,7 @@ esp_pci_reset(void *priv) memcpy(dev, &reset_state, sizeof(esp_t)); - dev->sbac = 1 << 19; + esp_pci_soft_reset(dev); } static void * @@ -2650,6 +2668,44 @@ static const device_config_t bios_enable_config[] = { // clang-format on }; +static const device_config_t am53c974_bios_enable_config[] = { + // clang-format off + { + .name = "bios_rev", + .description = "BIOS Revision", + .type = CONFIG_BIOS, + .default_string = "v3_01_amd", + .default_int = 0, + .file_filter = NULL, + .spinner = { 0 }, + .bios = { + { + .name = "Version 3.01 (AMD)", + .internal_name = "v3_01_amd", + .bios_type = BIOS_NORMAL, + .files_no = 1, + .local = 0, + .size = 16384, + .files = { AM53C974_3_01_AMD_ROM, "" } + }, + { .files_no = 0 } + }, + }, + { + .name = "bios", + .description = "Enable BIOS", + .type = CONFIG_BINARY, + .default_string = NULL, + .default_int = 0, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { { 0 } }, + .bios = { { 0 } } + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + static const device_config_t am53c974a_bios_enable_config[] = { // clang-format off { @@ -2739,7 +2795,7 @@ const device_t dc390_pci_device = { }; const device_t am53c974_pci_device = { - .name = "AMD 53c974A PCI", + .name = "AMD 53c974 PCI", .internal_name = "am53c974", .flags = DEVICE_PCI, .local = 1, @@ -2749,6 +2805,20 @@ const device_t am53c974_pci_device = { .available = NULL, .speed_changed = NULL, .force_redraw = NULL, + .config = am53c974_bios_enable_config +}; + +const device_t am53c974a_pci_device = { + .name = "AMD 53c974A PCI", + .internal_name = "am53c974a", + .flags = DEVICE_PCI, + .local = 2, + .init = dc390_init, + .close = esp_close, + .reset = esp_pci_reset, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, .config = am53c974a_bios_enable_config }; diff --git a/src/sio/sio_fdc37c669.c b/src/sio/sio_fdc37c669.c index d49dd9d30..6a8c73563 100644 --- a/src/sio/sio_fdc37c669.c +++ b/src/sio/sio_fdc37c669.c @@ -39,7 +39,7 @@ typedef struct fdc37c669_t { uint8_t tries; uint8_t has_ide; uint8_t dma_map[4]; - uint8_t irq_map[10]; + uint8_t irq_map[16]; uint8_t regs[256]; int locked; int rw_locked; diff --git a/src/sio/sio_gm82c803ab.c b/src/sio/sio_gm82c803ab.c index 8dca4ae6c..8f7749494 100644 --- a/src/sio/sio_gm82c803ab.c +++ b/src/sio/sio_gm82c803ab.c @@ -35,7 +35,7 @@ typedef struct gm82c803ab_t { uint8_t type; uint8_t tries; uint8_t has_ide; - uint8_t regs[16]; + uint8_t regs[256]; int cur_reg; int com3_addr; int com4_addr; diff --git a/src/sio/sio_gm82c803c.c b/src/sio/sio_gm82c803c.c index eb54b6661..91c03b369 100644 --- a/src/sio/sio_gm82c803c.c +++ b/src/sio/sio_gm82c803c.c @@ -35,7 +35,7 @@ typedef struct gm82c803c_t { uint8_t has_ide; uint8_t dma_map[4]; uint8_t irq_map[10]; - uint8_t regs[16]; + uint8_t regs[256]; int cur_reg; fdc_t *fdc; serial_t *uart[2]; diff --git a/src/sio/sio_pc87307.c b/src/sio/sio_pc87307.c index e18d94428..48c2aeb27 100644 --- a/src/sio/sio_pc87307.c +++ b/src/sio/sio_pc87307.c @@ -42,7 +42,7 @@ typedef struct pc87307_t { uint8_t baddr; uint8_t pm_idx; uint8_t regs[48]; - uint8_t ld_regs[256][208]; + uint8_t ld_regs[256][256]; uint8_t pcregs[16]; uint8_t gpio[2][8]; uint8_t pm[8]; diff --git a/src/sio/sio_pc87309.c b/src/sio/sio_pc87309.c index 9b50f8181..a6e4a5fa3 100644 --- a/src/sio/sio_pc87309.c +++ b/src/sio/sio_pc87309.c @@ -42,7 +42,7 @@ typedef struct pc87309_t { uint8_t baddr; uint8_t pm_idx; uint8_t regs[48]; - uint8_t ld_regs[256][208]; + uint8_t ld_regs[256][256]; uint8_t pm[8]; uint16_t superio_base; uint16_t pm_base; diff --git a/src/sio/sio_pc873xx.c b/src/sio/sio_pc873xx.c index bec747ed2..72c156426 100644 --- a/src/sio/sio_pc873xx.c +++ b/src/sio/sio_pc873xx.c @@ -39,7 +39,7 @@ typedef struct pc873xx_t { uint8_t tries; uint8_t has_ide; uint8_t fdc_on; - uint8_t regs[15]; + uint8_t regs[256]; uint16_t base_addr; int cur_reg; int max_reg; diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index 32b466740..45a69ffab 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -2928,10 +2928,12 @@ mach_recalctimings(svga_t *svga) dev->h_disp_time = dev->hdisp >> 3; - svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen); + 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); + if (dev->interlace) dev->dispend >>= 1; @@ -3060,29 +3062,29 @@ mach_recalctimings(svga_t *svga) if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && 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; + + default: + break; + } + } if ((svga->gdcreg[6] & 0x01) || (svga->attrregs[0x10] & 0x01)) { if ((svga->gdcreg[5] & 0x40) || (svga->attrregs[0x10] & 0x40) || (mach->regs[0xb0] & 0x20)) { - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); - mach_log("VGA clock=%02x.\n", mach->regs[0xa7] & 0x80); - 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; - - default: - break; - } - } svga->map8 = svga->pallook; mach_log("Lowres=%x, seqreg[1]bit3=%x.\n", svga->lowres, svga->seqregs[1] & 8); if (svga->lowres) diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index 113a8984f..caed7113f 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -799,9 +799,10 @@ svga_recalctimings(svga_t *svga) if ((svga->bpp <= 8) || ((svga->gdcreg[5] & 0x60) <= 0x20)) { if ((svga->gdcreg[5] & 0x60) == 0x00) { - if (svga->seqregs[1] & 8) /*Low res (320)*/ + if (svga->seqregs[1] & 8) { /*Low res (320)*/ svga->render = svga_render_4bpp_lowres; - else + svga_log("4 bpp low res.\n"); + } else svga->render = svga_render_4bpp_highres; } else if ((svga->gdcreg[5] & 0x60) == 0x20) { if (svga->seqregs[1] & 8) { /*Low res (320)*/ @@ -1045,11 +1046,11 @@ svga_recalctimings(svga_t *svga) crtcconst = svga->clock * svga->char_width; if (ibm8514_active && (svga->dev8514 != NULL)) { if (dev->on) - crtcconst8514 = svga->clock_8514; + crtcconst8514 = svga->clock_8514 * 8; } if (xga_active && (svga->xga != NULL)) { if (xga->on) - crtcconst_xga = svga->clock_xga; + crtcconst_xga = svga->clock_xga * svga->char_width; } #ifdef ENABLE_SVGA_LOG @@ -1093,7 +1094,6 @@ svga_recalctimings(svga_t *svga) if (dev->on) { disptime8514 = dev->h_total; _dispontime8514 = dev->h_disp_time; - svga_log("HTOTAL=%d, HDISP=%d.\n", dev->h_total, dev->h_disp); } } @@ -1135,6 +1135,7 @@ svga_recalctimings(svga_t *svga) case 1: /*Plus 8514/A*/ if (dev->on) { _dispofftime8514 = disptime8514 - _dispontime8514; + svga_log("DISPTIME8514=%lf, off=%lf, DISPONTIME8514=%lf, CRTCCONST8514=%lf.\n", disptime8514, _dispofftime8514, _dispontime8514, crtcconst8514); _dispontime8514 *= crtcconst8514; _dispofftime8514 *= crtcconst8514;