From b049f65b8e9018214cfab0bf5cf462722a03eea8 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Fri, 4 Nov 2022 14:05:23 +0600 Subject: [PATCH 1/8] voodoo: Fix misleading pixel format error message --- src/video/vid_voodoo_banshee.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/vid_voodoo_banshee.c b/src/video/vid_voodoo_banshee.c index 1a0b77085..6775864fa 100644 --- a/src/video/vid_voodoo_banshee.c +++ b/src/video/vid_voodoo_banshee.c @@ -527,7 +527,7 @@ banshee_recalctimings(svga_t *svga) svga->bpp = 32; break; default: - fatal("Unknown pixel format %08x\n", banshee->vgaInit0); + fatal("Unknown pixel format %08x (vgaInit0=%08x)\n", VIDPROCCFG_DESKTOP_PIX_FORMAT, banshee->vgaInit0); } if (!(banshee->vidProcCfg & VIDPROCCFG_DESKTOP_TILE) && (banshee->vidProcCfg & VIDPROCCFG_HALF_MODE)) svga->rowcount = 1; From 40139765cde23a5eb4ada9a8def4e6777f2aed92 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 4 Nov 2022 16:32:45 +0100 Subject: [PATCH 2/8] Some small AMD PCSCSI fixes. --- src/scsi/scsi_pcscsi.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/scsi/scsi_pcscsi.c b/src/scsi/scsi_pcscsi.c index 109a699d9..233905821 100644 --- a/src/scsi/scsi_pcscsi.c +++ b/src/scsi/scsi_pcscsi.c @@ -1251,6 +1251,7 @@ static void esp_pci_soft_reset(esp_t *dev) { esp_irq(dev, 0); + dev->rregs[ESP_RSTAT] &= ~STAT_INT; esp_pci_hard_reset(dev); } @@ -1632,9 +1633,11 @@ esp_pci_read(int func, int addr, void *p) case 0x03: return 0x20; case 0x04: - return esp_pci_regs[0x04] & 3; /*Respond to IO*/ + return esp_pci_regs[0x04] | 0x80; /*Respond to IO*/ + case 0x05: + return esp_pci_regs[0x05]; case 0x07: - return 2; + return esp_pci_regs[0x07] | 0x02; case 0x08: return 0; /*Revision ID*/ case 0x09: @@ -1646,7 +1649,7 @@ esp_pci_read(int func, int addr, void *p) case 0x0E: return 0; /*Header type */ case 0x10: - return 1; /*I/O space*/ + return (esp_pci_bar[0].addr_regs[1] & 0x80) | 0x01; /*I/O space*/ case 0x11: return esp_pci_bar[0].addr_regs[1]; case 0x12: @@ -1710,7 +1713,17 @@ esp_pci_write(int func, int addr, uint8_t val, void *p) if ((dev->PCIBase != 0) && (val & PCI_COMMAND_IO)) esp_io_set(dev, dev->PCIBase, 0x80); } - esp_pci_regs[addr] = val & 3; + if (dev->has_bios) + esp_pci_regs[addr] = val & 0x47; + else + esp_pci_regs[addr] = val & 0x45; + break; + case 0x05: + esp_pci_regs[addr] = val & 0x01; + break; + + case 0x07: + esp_pci_regs[addr] &= ~(val & 0xf9); break; case 0x10: @@ -1723,7 +1736,7 @@ esp_pci_write(int func, int addr, uint8_t val, void *p) /* Then let's set the PCI regs. */ esp_pci_bar[0].addr_regs[addr & 3] = val; /* Then let's calculate the new I/O base. */ - esp_pci_bar[0].addr &= 0xff00; + esp_pci_bar[0].addr &= 0xff80; dev->PCIBase = esp_pci_bar[0].addr; /* Log the new base. */ // esp_log("ESP PCI: New I/O base is %04X\n" , dev->PCIBase); @@ -1756,7 +1769,7 @@ esp_pci_write(int func, int addr, uint8_t val, void *p) esp_bios_set_addr(dev, dev->BIOSBase); return; - case 0x3C: + case 0x3c: esp_pci_regs[addr] = val; dev->irq = val; esp_log("ESP IRQ now: %i\n", val); From bcce95caf52fe739271c7e3cfd34290ddb8c4ba8 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 4 Nov 2022 17:07:00 +0100 Subject: [PATCH 3/8] More small PCSCSI fixes. --- src/scsi/scsi_pcscsi.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/scsi/scsi_pcscsi.c b/src/scsi/scsi_pcscsi.c index 233905821..1148a9e87 100644 --- a/src/scsi/scsi_pcscsi.c +++ b/src/scsi/scsi_pcscsi.c @@ -1710,9 +1710,14 @@ esp_pci_write(int func, int addr, uint8_t val, void *p) valxor = (val & 3) ^ esp_pci_regs[addr]; if (valxor & PCI_COMMAND_IO) { esp_io_remove(dev, dev->PCIBase, 0x80); - if ((dev->PCIBase != 0) && (val & PCI_COMMAND_IO)) + if ((val & PCI_COMMAND_IO) && (dev->PCIBase != 0)) esp_io_set(dev, dev->PCIBase, 0x80); } + if (dev->has_bios && (valxor & PCI_COMMAND_MEM)) { + esp_bios_disable(dev); + if ((val & PCI_COMMAND_MEM) && (esp_pci_bar[1].addr & 0x00000001)) + esp_bios_set_addr(dev, dev->BIOSBase); + } if (dev->has_bios) esp_pci_regs[addr] = val & 0x47; else @@ -1760,12 +1765,12 @@ esp_pci_write(int func, int addr, uint8_t val, void *p) /* Then let's set the PCI regs. */ esp_pci_bar[1].addr_regs[addr & 3] = val; /* Then let's calculate the new I/O base. */ - esp_pci_bar[1].addr &= 0xfff80001; - dev->BIOSBase = esp_pci_bar[1].addr & 0xfff80000; + esp_pci_bar[1].addr &= 0xffff0001; + dev->BIOSBase = esp_pci_bar[1].addr & 0xffff0000; /* Log the new base. */ // esp_log("ESP PCI: New BIOS base is %08X\n" , dev->BIOSBase); /* We're done, so get out of the here. */ - if (esp_pci_bar[1].addr & 0x00000001) + if ((esp_pci_regs[0x04] & PCI_COMMAND_MEM) && (esp_pci_bar[1].addr & 0x00000001)) esp_bios_set_addr(dev, dev->BIOSBase); return; From ac9decc8fdfe113c49db6fa1b5adf23cdabac57d Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Fri, 4 Nov 2022 12:17:05 -0400 Subject: [PATCH 4/8] Modernize MSYS2 Makefile build --- .github/workflows/c-cpp.yml | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 8dbd4a4b5..d89bb7c51 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -1,4 +1,4 @@ -name: MinGW64 Makefile +name: MSYS2 Makefile on: @@ -16,7 +16,7 @@ on: jobs: build: - name: ${{ matrix.environment.msystem }} Makefile build (DEV_BUILD=${{ matrix.dev-build }}, NEW_DYNAREC=${{ matrix.new-dynarec }}) + name: MSYS2 Makefile build ${{ matrix.build.name }} ${{ matrix.dynarec.name }} build (${{ matrix.environment.msystem }}) runs-on: windows-latest @@ -27,8 +27,22 @@ jobs: strategy: fail-fast: true matrix: - dev-build: ['y', 'n'] - new-dynarec: ['y', 'n'] + build: + - name: Debug + debug: on + dev: off + slug: -Debug + - name: Dev + debug: on + dev: on + slug: -Dev + dynarec: + - name: ODR + new: off + slug: -ODR + - name: NDR + new: on + slug: -NDR environment: - msystem: MINGW32 prefix: mingw-w64-i686 @@ -54,5 +68,9 @@ jobs: ${{ matrix.environment.prefix }}-rtmidi - uses: actions/checkout@v3 - name: make - run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.dev-build }} NEW_DYNAREC=${{ matrix.new-dynarec }} X64=${{ matrix.environment.x64 }} VNC=n + run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.build-type.dev }} DEBUG=${{ matrix.build-type.debug }} NEW_DYNAREC=${{ matrix.dynarec.new }} X64=${{ matrix.environment.x64 }} VNC=n working-directory: ./src + - uses: actions/upload-artifact@v3 + with: + name: '86Box${{ matrix.dynarec.slug }}${{ matrix.build.slug }}-Windows-${{ matrix.environment.msystem }}-gha${{ github.run_number }}' + path: src/86Box.exe From 644108fba138c7b24e21d12847b18a4095087758 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Fri, 4 Nov 2022 13:16:09 -0400 Subject: [PATCH 5/8] Correct reported issues --- .github/workflows/c-cpp.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index d89bb7c51..795309285 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -29,19 +29,19 @@ jobs: matrix: build: - name: Debug - debug: on - dev: off + debug: y + dev: n slug: -Debug - name: Dev - debug: on - dev: on + debug: y + dev: y slug: -Dev dynarec: - name: ODR - new: off + new: n slug: -ODR - name: NDR - new: on + new: y slug: -NDR environment: - msystem: MINGW32 From 6aa977daf59ebad3f8617c3b6a8c6517b311a199 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Fri, 4 Nov 2022 17:58:41 -0400 Subject: [PATCH 6/8] Fix my silly mistake --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 795309285..a91518084 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -68,7 +68,7 @@ jobs: ${{ matrix.environment.prefix }}-rtmidi - uses: actions/checkout@v3 - name: make - run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.build-type.dev }} DEBUG=${{ matrix.build-type.debug }} NEW_DYNAREC=${{ matrix.dynarec.new }} X64=${{ matrix.environment.x64 }} VNC=n + run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.build.dev }} DEBUG=${{ matrix.build.debug }} NEW_DYNAREC=${{ matrix.dynarec.new }} X64=${{ matrix.environment.x64 }} VNC=n working-directory: ./src - uses: actions/upload-artifact@v3 with: From 2e2c2196dab10dc7b1cb1a98175434ca8471451d Mon Sep 17 00:00:00 2001 From: Dimitar Angelov Date: Sat, 5 Nov 2022 00:53:50 +0100 Subject: [PATCH 7/8] Pravetz-16 proper naming of BIOS files --- src/machine/m_xt.c | 19 +++++++++---------- src/video/vid_cga.c | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/machine/m_xt.c b/src/machine/m_xt.c index 0aa0468fa..b7f1f3483 100644 --- a/src/machine/m_xt.c +++ b/src/machine/m_xt.c @@ -334,25 +334,24 @@ machine_xt_pravetz16_imko4_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/pravetz16/BIOS_IMKO4_FE00.bin", + ret = bios_load_linear("roms/machines/pravetz16/BIOS_IMKO4_FE00.BIN", 0x000fe000, 65536, 0); - if (ret) { - ret = bios_load_aux_linear("roms/machines/pravetz16/IMKO4-D34_SGS-M2764ADIP28.BIN", - 0x000f4000, 8192, 0); + if (ret) + { + bios_load_aux_linear("roms/machines/pravetz16/BIOS_IMKO4_F400.BIN", + 0x000f4000, 8192, 0); - if (ret) { - bios_load_aux_linear("roms/machines/pravetz16/1.bin", + bios_load_aux_linear("roms/machines/pravetz16/BIOS_IMKO4_F600.BIN", 0x000f6000, 8192, 0); - bios_load_aux_linear("roms/machines/pravetz16/2.bin", + bios_load_aux_linear("roms/machines/pravetz16/BIOS_IMKO4_FA00.BIN", 0x000fa000, 8192, 0); - bios_load_aux_linear("roms/machines/pravetz16/5.bin", + bios_load_aux_linear("roms/machines/pravetz16/BIOS_IMKO4_F800.BIN", 0x000f8000, 8192, 0); - bios_load_aux_linear("roms/machines/pravetz16/6.bin", + bios_load_aux_linear("roms/machines/pravetz16/BIOS_IMKO4_FC00.BIN", 0x000fc000, 8192, 0); - } } if (bios_only || !ret) diff --git a/src/video/vid_cga.c b/src/video/vid_cga.c index 3cd581488..a49c89c18 100644 --- a/src/video/vid_cga.c +++ b/src/video/vid_cga.c @@ -540,7 +540,7 @@ cga_pravetz_init(const device_t *info) { cga_t *cga = cga_standalone_init(info); - loadfont("roms/video/cga/CGA - PRAVETZ.BIN", 10); + loadfont("roms/video/cga/PRAVETZ-VDC2.BIN", 10); io_removehandler(0x03dd, 0x0001, cga_in, NULL, NULL, cga_out, NULL, NULL, cga); io_sethandler(0x03dd, 0x0001, cga_pravetz_in, NULL, NULL, cga_pravetz_out, NULL, NULL, cga); From f6add2041021ce9fd8f8231075710d5aa2eefdef Mon Sep 17 00:00:00 2001 From: Dimitar Angelov Date: Sat, 5 Nov 2022 03:11:03 +0100 Subject: [PATCH 8/8] Adding Micoms XL7-Turbo (8088 mainboard, compatible PC/XT) --- src/include/86box/machine.h | 1 + src/machine/m_xt.c | 15 +++++++++++++++ src/machine/machine_table.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index c8f2314c0..b7109d8fd 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -792,6 +792,7 @@ 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_micoms_xl7turbo_init(const machine_t *); /* m_xt_compaq.c */ extern int machine_xt_compaq_deskpro_init(const machine_t *); diff --git a/src/machine/m_xt.c b/src/machine/m_xt.c index 0aa0468fa..2a125fee2 100644 --- a/src/machine/m_xt.c +++ b/src/machine/m_xt.c @@ -365,6 +365,21 @@ machine_xt_pravetz16_imko4_init(const machine_t *model) 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; + + machine_xt_init_ex(model); + return ret; +} + int machine_xt_pc4i_init(const machine_t *model) { diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 4f8777875..bdfedc676 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -923,6 +923,42 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, + { + .name = "[8088] Micoms XL-7 Turbo", + .internal_name = "mxl7t", + .type = MACHINE_TYPE_8088, + .chipset = MACHINE_CHIPSET_DISCRETE, + .init = machine_xt_micoms_xl7turbo_init, + .pad = 0, + .pad0 = 0, + .pad1 = MACHINE_AVAILABLE, + .pad2 = 0, + .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 = KBC_IBM_PC_XT, + .kbc_p1 = 0xff00, + .gpio = 0xffffffff, + .device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, { .name = "[8088] NCR PC4i", .internal_name = "pc4i",