diff --git a/CMakeLists.txt b/CMakeLists.txt index 2766d4921..f3da96f5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ if(MUNT_EXTERNAL) endif() project(86Box - VERSION 4.2.1 + VERSION 4.3 DESCRIPTION "Emulator of x86-based systems" HOMEPAGE_URL "https://86box.net" LANGUAGES C CXX) diff --git a/debian/changelog b/debian/changelog index 78c838a01..827665880 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -86box (4.2.1) UNRELEASED; urgency=medium +86box (4.3) UNRELEASED; urgency=medium * Bump release. - -- Jasmine Iwanek Fri, 26 Jul 2024 21:09:16 +0200 + -- Jasmine Iwanek Mon, 02 Sep 2024 00:16:28 +0200 diff --git a/src/cpu/386_common.c b/src/cpu/386_common.c index ea9cc1126..dcbe3608c 100644 --- a/src/cpu/386_common.c +++ b/src/cpu/386_common.c @@ -1021,7 +1021,7 @@ smram_restore_state_p6(uint32_t *saved_state) rammask |= 0x3000000; if (saved_state[SMRAM_FIELD_P6_A20M] & 0x01) - rammask &= ~0xffefffff; + rammask &= 0xffefffff; flushmmucache(); diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index 120cc6a1e..5326c9d14 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -2508,7 +2508,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 75000000, .multi = 3.0, - .voltage = 3300, + .voltage = 5000, .edx_reset = 0x480, .cpuid_model = 0x480, .cyrix_id = 0x0000, @@ -2525,7 +2525,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 100000000, .multi = 3.0, - .voltage = 3300, + .voltage = 5000, .edx_reset = 0x483, .cpuid_model = 0x483, .cyrix_id = 0x0000, @@ -3066,7 +3066,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 133333333, .multi = 4.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x4e0, .cpuid_model = 0x4e0, .cyrix_id = 0, @@ -3083,7 +3083,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 150000000, .multi = 3.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x482, .cpuid_model = 0x482, .cyrix_id = 0, @@ -3100,7 +3100,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 160000000, .multi = 4.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x4e0, .cpuid_model = 0x4e0, .cyrix_id = 0, @@ -3332,7 +3332,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 80000000, .multi = 2.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x480, .cpuid_model = 0, .cyrix_id = 0x002f, @@ -3349,7 +3349,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 100000000, .multi = 3.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x480, .cpuid_model = 0, .cyrix_id = 0x002f, @@ -3366,7 +3366,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 120000000, .multi = 3.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x480, .cpuid_model = 0, .cyrix_id = 0x002f, @@ -3383,7 +3383,7 @@ const cpu_family_t cpu_families[] = { .fpus = fpus_internal, .rspeed = 133333333, .multi = 4.0, - .voltage = 3450, + .voltage = 5000, .edx_reset = 0x480, .cpuid_model = 0, .cyrix_id = 0x002f, diff --git a/src/cpu/x87.h b/src/cpu/x87.h index 197e18bfe..060f2fe27 100644 --- a/src/cpu/x87.h +++ b/src/cpu/x87.h @@ -228,7 +228,6 @@ FPU_save_regi_tag(extFloat80_t reg, int tag, int stnr) #define FPU_check_pending_exceptions() \ do { \ if (fpu_state.swd & FPU_SW_Summary) { \ - pclog("SW Summary.\n"); \ if (cr0 & 0x20) { \ x86_int(16); \ return 1; \ diff --git a/src/device/kbc_at.c b/src/device/kbc_at.c index d38a9bb72..b1f15d42a 100644 --- a/src/device/kbc_at.c +++ b/src/device/kbc_at.c @@ -828,7 +828,7 @@ write_p2(atkbc_t *dev, uint8_t val) and can find out what they actually did to make it boot from FFFFF0 correctly despite A20 being gated when the CPU is reset, this will have to do. */ - if (kbc_ven == KBC_VEN_SIEMENS) + if ((kbc_ven == KBC_VEN_SIEMENS) || !strcmp(machine_get_internal_name(), "acera1g")) is486 ? loadcs(0xf000) : loadcs_2386(0xf000); } } diff --git a/src/device/serial.c b/src/device/serial.c index ecc08f15d..2b832f750 100644 --- a/src/device/serial.c +++ b/src/device/serial.c @@ -223,7 +223,7 @@ serial_write_fifo(serial_t *dev, uint8_t dat) ((dev->type >= SERIAL_16550) && dev->fifo_enabled) ? fifo_get_count(dev->rcvr_fifo) : 0); - if (!(dev->mctrl & 0x10)) + if ((dev != NULL) && !(dev->mctrl & 0x10)) write_fifo(dev, dat); } diff --git a/src/floppy/fdc.c b/src/floppy/fdc.c index 6baef8ab8..0c18f2f30 100644 --- a/src/floppy/fdc.c +++ b/src/floppy/fdc.c @@ -612,9 +612,11 @@ fdc_io_command_phase1(fdc_t *fdc, int out) ui_sb_update_icon(SB_FLOPPY | real_drive(fdc, fdc->drive), 1); fdc->stat = out ? 0x10 : 0x50; - if ((fdc->flags & FDC_FLAG_PCJR) || !fdc->dma) + if ((fdc->flags & FDC_FLAG_PCJR) || !fdc->dma) { fdc->stat |= 0x20; - else + if (out) + fdc->stat |= 0x80; + } else dma_set_drq(fdc->dma_ch, 1); } diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c index e39ab87be..79e46819e 100644 --- a/src/machine/m_at_socket4.c +++ b/src/machine/m_at_socket4.c @@ -296,7 +296,7 @@ machine_at_award_common_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&keyboard_ps2_ami_pci_device); + device_add(&keyboard_at_ami_device); device_add(&sio_zb_device); device_add(&intel_flash_bxt_device); } diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index c0c0e9085..942c97541 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -5484,10 +5484,10 @@ const machine_t machines[] = { .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, - .min_bus = 25000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, .min_multi = 0, .max_multi = 0 }, @@ -5524,10 +5524,10 @@ const machine_t machines[] = { .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, - .min_bus = 25000000, - .max_bus = 66666667, - .min_voltage = 5000, - .max_voltage = 5000, + .min_bus = 0, + .max_bus = 0, + .min_voltage = 0, + .max_voltage = 0, .min_multi = 0, .max_multi = 0 }, diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index e9abdd0d1..4fe6b7567 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -279,7 +279,7 @@ static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_default = { { 0, 0 }, { 0, 0 }, { 0, 0 }, - { GPMODE_CAPABILITIES_PAGE, 0x12, 0, 0, 1, 0, 0, 0, 2, 0xC2, 1, 0, 0, 0, 2, 0xC2, 0, 0, 0, 0 }} + { GPMODE_CAPABILITIES_PAGE, 0x12, 7, 0, 0x3f, 1, 0x0d, 3, 2, 0xC2, 1, 0, 0, 0, 2, 0xC2, 0, 0, 0, 0 }} }; static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_default_scsi = { @@ -325,7 +325,7 @@ static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_default_scsi = { { 0, 0 }, { 0, 0 }, { 0, 0 }, - { GPMODE_CAPABILITIES_PAGE, 0x12, 0, 0, 1, 0, 0, 0, 2, 0xC2, 1, 0, 0, 0, 2, 0xC2, 0, 0, 0, 0 }} + { GPMODE_CAPABILITIES_PAGE, 0x12, 7, 0, 0x3f, 1, 0x0d, 3, 2, 0xC2, 1, 0, 0, 0, 2, 0xC2, 0, 0, 0, 0 }} }; static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_default_sony_scsi = { @@ -371,7 +371,7 @@ static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_default_sony_scsi = { 0, 0 }, { 0, 0 }, { 0, 0 }, - { GPMODE_CAPABILITIES_PAGE, 0x12, 0, 0, 1, 0, 0, 0, 2, 0xC2, 1, 0, 0, 0, 2, 0xC2, 0, 0, 0, 0 }} + { GPMODE_CAPABILITIES_PAGE, 0x12, 7, 0, 0x3f, 1, 0x0d, 3, 2, 0xC2, 1, 0, 0, 0, 2, 0xC2, 0, 0, 0, 0 }} }; static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_changeable = { @@ -2436,7 +2436,15 @@ begin: b[2] = (0 << 2) | 0x02 | 0x01; /* persistent and current */ b[3] = 4; - b[4] = 0x1d; + b[4] = 0x0d; + /* The early CD-ROM drives we emulate (NEC CDR-260 for ATAPI and + early vendor SCSI CD-ROM models) are caddy drives, the later + ones are tray drives. */ + if (dev->drv->bus_type == CDROM_BUS_SCSI) + b[4] |= ((dev->drv->type == CDROM_TYPE_86BOX_100) ? 0x20 : 0x00); + else + b[4] |= ((dev->drv->type == CDROM_TYPE_NEC_260_100) || + ((dev->drv->type == CDROM_TYPE_NEC_260_101)) ? 0x00 : 0x20); alloc_length += 8; b += 8; diff --git a/src/sio/sio_fdc37c93x.c b/src/sio/sio_fdc37c93x.c index 949c59552..a0152c34a 100644 --- a/src/sio/sio_fdc37c93x.c +++ b/src/sio/sio_fdc37c93x.c @@ -32,6 +32,7 @@ #include <86box/fdd.h> #include <86box/fdc.h> #include <86box/keyboard.h> +#include <86box/machine.h> #include <86box/nvr.h> #include <86box/apm.h> #include <86box/acpi.h> @@ -131,7 +132,8 @@ fdc37c93x_gpio_read(uint16_t port, void *priv) const fdc37c93x_t *dev = (fdc37c93x_t *) priv; uint8_t ret = 0xff; - ret = dev->gpio_regs[port & 1]; + if (strcmp(machine_get_internal_name(), "vectra54")) + ret = dev->gpio_regs[port & 1]; return ret; } diff --git a/src/unix/assets/86Box.spec b/src/unix/assets/86Box.spec index 15eca9400..86f380d22 100644 --- a/src/unix/assets/86Box.spec +++ b/src/unix/assets/86Box.spec @@ -15,7 +15,7 @@ %global romver 4.1 Name: 86Box -Version: 4.2.1 +Version: 4.3 Release: 1%{?dist} Summary: Classic PC emulator License: GPLv2+ @@ -121,5 +121,5 @@ popd %{_datadir}/%{name}/roms %changelog -* Fri Jul 26 2024 Robert de Rooy 4.2.1-1 +* Sat Aug 31 Jasmine Iwanek 4.3-1 - Bump release diff --git a/src/unix/assets/net.86box.86Box.metainfo.xml b/src/unix/assets/net.86box.86Box.metainfo.xml index 7fbac6d7f..7a0786a16 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/video/vid_s3.c b/src/video/vid_s3.c index 6fe5f1ad6..27d4f023e 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -9441,18 +9441,12 @@ s3_disable_handlers(s3_t *s3) { s3_io_remove(s3); - mem_mapping_set_addr(&s3->linear_mapping, 0, 0); mem_mapping_disable(&s3->linear_mapping); - mem_mapping_set_addr(&s3->mmio_mapping, 0, 0); mem_mapping_disable(&s3->mmio_mapping); - mem_mapping_set_addr(&s3->new_mmio_mapping, 0, 0); mem_mapping_disable(&s3->new_mmio_mapping); - mem_mapping_set_addr(&s3->svga.mapping, 0xa0000, 0x20000); mem_mapping_disable(&s3->svga.mapping); - if (s3->pci) { - mem_mapping_set_addr(&s3->bios_rom.mapping, 0xc0000, 0x8000); + if (s3->pci) mem_mapping_disable(&s3->bios_rom.mapping); - } /* Save all the mappings and the timers because they are part of linked lists. */ reset_state->linear_mapping = s3->linear_mapping; @@ -9466,8 +9460,6 @@ s3_disable_handlers(s3_t *s3) memset(s3->svga.vram, 0x00, s3->svga.vram_max + 8); memset(s3->svga.changedvram, 0x00, (s3->svga.vram_max >> 12) + 1); - - pci_clear_irq(s3->pci_slot, PCI_INTA, &s3->irq_state); } static void @@ -9482,7 +9474,6 @@ s3_reset(void *priv) reset_state->pci_slot = s3->pci_slot; *s3 = *reset_state; - s3_io_set(s3); } } diff --git a/vcpkg.json b/vcpkg.json index 0d71210c2..87859869b 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "86box", - "version-string": "4.2.1", + "version-string": "4.3", "homepage": "https://86box.net/", "documentation": "https://86box.readthedocs.io/", "license": "GPL-2.0-or-later",