diff --git a/CMakeLists.txt b/CMakeLists.txt index 8af57ca9a..f6da36cc3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ if(MUNT_EXTERNAL) endif() project(86Box - VERSION 4.0 + VERSION 4.0.1 DESCRIPTION "Emulator of x86-based systems" HOMEPAGE_URL "https://86box.net" LANGUAGES C CXX) diff --git a/README.md b/README.md index 971f3c642..370bc940e 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,6 @@ Performance may vary depending on both host and guest configuration. Most emulat It is also recommended to use a manager application with 86Box for easier handling of multiple virtual machines. * [86Box Manager](https://github.com/86Box/86BoxManager) by [Overdoze](https://github.com/daviunic) (Windows only) -* [86Box Manager Lite](https://github.com/insanemal/86box_manager_py) by [Insanemal](https://github.com/insanemal) -* [WinBox for 86Box](https://github.com/86Box/WinBox-for-86Box) by Laci bá' (Windows only) * [Linbox-qt5](https://github.com/Dungeonseeker/linbox-qt5) by Dungeonseeker (Linux focused, should work on Windows though untested) * [MacBox for 86Box](https://github.com/Moonif/MacBox) by [Moonif](https://github.com/Moonif) (MacOS only) diff --git a/debian/changelog b/debian/changelog index 1bca318dd..a65d161a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -86box (4.0) UNRELEASED; urgency=medium +86box (4.0.1) UNRELEASED; urgency=medium * Bump release. - -- Jasmine Iwanek Tue, 28 Feb 2023 00:02:16 -0500 + -- Jasmine Iwanek Thu, 12 Oct 2023 00:00:31 +0200 diff --git a/src/cpu/808x.c b/src/cpu/808x.c index 8f92a1198..f8209def6 100644 --- a/src/cpu/808x.c +++ b/src/cpu/808x.c @@ -1233,19 +1233,6 @@ nearcall(uint16_t new_ip) push(&ret_ip); } -static void -farcall(uint16_t new_cs, uint16_t new_ip, int jump) -{ - if (jump) - wait(1, 0); - pfq_do_suspend(); - wait(3, 0); - push(&CS); - load_cs(new_cs); - wait(2, 0); - nearcall(new_ip); -} - static void farcall2(uint16_t new_cs, uint16_t new_ip) { @@ -1320,20 +1307,6 @@ sw_int(uint16_t intr) push(&old_ip); } -static void -int1(void) -{ - wait(2, 0); - intr_routine(1, 1); -} - -static void -int2(void) -{ - wait(2, 0); - intr_routine(2, 1); -} - static void int3(void) { @@ -1341,17 +1314,6 @@ int3(void) intr_routine(3, 0); } -static void -int_o(void) -{ - wait(4, 0); - - if (cpu_state.flags & V_FLAG) { - wait(2, 0); - intr_routine(4, 0); - } -} - void interrupt_808x(uint16_t addr) { @@ -2098,19 +2060,6 @@ farret(int far) set_ip(new_ip); } -/* The IRET microcode routine. */ -static void -iret_routine(void) -{ - wait(1, 0); - farret(1); - if (is_nec) - cpu_state.flags = pop() | 0x8002; - else - cpu_state.flags = pop() | 0x0002; - wait(1, 0); -} - /* Executes instructions up to the specified number of cycles. */ void execx86(int cycs) diff --git a/src/cpu/808x/CMakeLists.txt b/src/cpu/808x/CMakeLists.txt deleted file mode 100644 index d29bdf4e0..000000000 --- a/src/cpu/808x/CMakeLists.txt +++ /dev/null @@ -1,16 +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. -# -# CMake build script. -# -# Authors: David Hrdlička, -# -# Copyright 2020-2021 David Hrdlička. -# - -add_library(808x OBJECT queue.c) diff --git a/src/cpu/808x/queue.c b/src/cpu/808x/queue.c deleted file mode 100644 index b37ee0fb0..000000000 --- a/src/cpu/808x/queue.c +++ /dev/null @@ -1,192 +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. - * - * 808x CPU emulation, mostly ported from reenigne's XTCE, which - * is cycle-accurate. - * - * Authors: gloriouscow, - * Miran Grca, - * - * Copyright 2023 gloriouscow. - * Copyright 2023 Miran Grca. - */ -#include -#include -#include -#include -#include -#include -#include - -#define HAVE_STDARG_H -#include <86box/86box.h> -#include "cpu.h" -#include "x86.h" -#include <86box/machine.h> -#include <86box/io.h> -#include <86box/mem.h> -#include <86box/rom.h> -#include <86box/nmi.h> -#include <86box/pic.h> -#include <86box/ppi.h> -#include <86box/timer.h> -#include <86box/gdbstub.h> -// #include "808x.h" -#include "queue.h" - -/* TODO: Move to cpu.h so this can eventually be reused for 286+ as well. */ -#define QUEUE_MAX 6 - -/* NOTE: When porting from Rust to C, please use uintptr_t and not size_t, - so it can be printed with PRIuPTR. */ -typedef struct queue_t { - uintptr_t size; - uintptr_t len; - uintptr_t back; - uintptr_t front; - uint8_t q[QUEUE_MAX]; - uint16_t preload; - queue_delay_t delay; -} queue_t; - -static queue_t queue; - -#ifdef ENABLE_QUEUE_LOG -int queue_do_log = ENABLE_QUEUE_LOG; - -static void -queue_log(const char *fmt, ...) -{ - va_list ap; - - if (queue_do_log) { - va_start(ap, fmt); - pclog_ex(fmt, ap); - va_end(ap); - } -} -#else -# define queue_log(fmt, ...) -#endif - -void -queue_set_size(uintptr_t size) -{ - if (size > QUEUE_MAX) - fatal("Requested prefetch queue of %" PRIuPTR " bytes is too big\n", size); - - queue.size = size; -} - -uintptr_t -queue_get_len(void) -{ - return queue.len; -} - -int -queue_is_full(void) -{ - return (queue.len != queue.size); -} - -uint16_t -queue_get_preload(void) -{ - uint16_t ret = queue.preload; - queue.preload = 0x0000; - - return ret; -} - -int -queue_has_preload(void) -{ - return (queue.preload & FLAG_PRELOADED) ? 1 : 0; -} - -void -queue_set_preload(void) -{ - uint8_t byte; - - if (queue.len > 0) { - byte = queue_pop(); - queue.preload = ((uint16_t) byte) | FLAG_PRELOADED; - } else - fatal("Tried to preload with empty queue\n"); -} - -void -queue_push8(uint8_t byte) -{ - if (queue.len < queue.size) { - queue.q[queue.front] = byte; - queue.front = (queue.front + 1) % queue.size; - queue.len++; - - if (queue.len == 3) - queue.delay = DELAY_WRITE; - else - queue.delay = DELAY_NONE; - } else - fatal("Queue overrun\n"); -} - -void -queue_push16(uint16_t word) -{ - queue_push8((uint8_t) (word & 0xff)); - queue_push8((uint8_t) ((word >> 8) & 0xff)); -} - -uint8_t -queue_pop(void) -{ - uint8_t byte = 0xff; - - if (queue.len > 0) { - byte = queue.q[queue.back]; - - queue.back = (queue.back + 1) % queue.size; - queue.len--; - - if (queue.len >= 3) - queue.delay = DELAY_READ; - else - queue.delay = DELAY_NONE; - } else - fatal("Queue underrun\n"); - - return byte; -} - -queue_delay_t -queue_get_delay(void) -{ - return queue.delay; -} - -void -queue_flush(void) -{ - memset(&queue, 0x00, sizeof(queue_t)); - - queue.delay = DELAY_NONE; -} - -void -queue_init(void) -{ - queue_flush(); - - if (is8086) - queue_set_size(6); - else - queue_set_size(4); -} diff --git a/src/cpu/808x/queue.h b/src/cpu/808x/queue.h deleted file mode 100644 index 7c1998295..000000000 --- a/src/cpu/808x/queue.h +++ /dev/null @@ -1,42 +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. - * - * Prefetch queue implementation header. - * - * Authors: gloriouscow, - * Miran Grca, - * - * Copyright 2023 gloriouscow. - * Copyright 2023 Miran Grca. - */ -#ifndef EMU_QUEUE_H -#define EMU_QUEUE_H - -typedef enum queue_delay_t { - DELAY_READ, - DELAY_WRITE, - DELAY_NONE -} queue_delay_t; - -#define FLAG_PRELOADED 0x8000 - -extern void queue_set_size(uintptr_t size); -extern uintptr_t queue_get_len(void); -extern int queue_is_full(void); -extern uint16_t queue_get_preload(void); -extern int queue_has_preload(void); -extern void queue_set_preload(void); -extern void queue_push8(uint8_t byte); -extern void queue_push16(uint16_t word); -extern uint8_t queue_pop(void); -extern queue_delay_t queue_get_delay(void); -extern void queue_flush(void); - -extern void queue_init(void); - -#endif /*EMU_QUEUE_H*/ diff --git a/src/cpu/CMakeLists.txt b/src/cpu/CMakeLists.txt index 27e89c523..bd03a5558 100644 --- a/src/cpu/CMakeLists.txt +++ b/src/cpu/CMakeLists.txt @@ -36,6 +36,3 @@ endif() add_subdirectory(softfloat) target_link_libraries(86Box softfloat) - -add_subdirectory(808x) -target_link_libraries(86Box 808x) diff --git a/src/include_make/86box/version.h b/src/include_make/86box/version.h index 96e81ce5f..4eb6e515f 100644 --- a/src/include_make/86box/version.h +++ b/src/include_make/86box/version.h @@ -22,12 +22,12 @@ #define EMU_NAME "86Box" #define EMU_NAME_W LSTR(EMU_NAME) -#define EMU_VERSION "4.0" +#define EMU_VERSION "4.0.1" #define EMU_VERSION_W LSTR(EMU_VERSION) #define EMU_VERSION_EX "3.50" /* frozen due to IDE re-detection behavior on Windows */ #define EMU_VERSION_MAJ 4 #define EMU_VERSION_MIN 0 -#define EMU_VERSION_PATCH 0 +#define EMU_VERSION_PATCH 1 #define EMU_BUILD_NUM 0 diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c index 3b983c05f..06974a96d 100644 --- a/src/machine/m_at_socket7_3v.c +++ b/src/machine/m_at_socket7_3v.c @@ -373,7 +373,7 @@ machine_at_ms5119_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/ms5119/A37E.ROM", + ret = bios_load_linear("roms/machines/ms5119/A37EB.ROM", 0x000e0000, 131072, 0); if (bios_only || !ret) diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c index cc3fc825d..fde2e98ba 100644 --- a/src/sound/snd_sb.c +++ b/src/sound/snd_sb.c @@ -3861,7 +3861,7 @@ const device_t sb_16_device = { }; const device_t sb_vibra16s_onboard_device = { - .name = "Sound Blaster Vibra 16S (On-Board)", + .name = "Sound Blaster ViBRA 16S (On-Board)", .internal_name = "sb_vibra16s_onboard", .flags = DEVICE_ISA | DEVICE_AT, .local = FM_YMF289B, @@ -3875,7 +3875,7 @@ const device_t sb_vibra16s_onboard_device = { }; const device_t sb_vibra16s_device = { - .name = "Sound Blaster Vibra 16S", + .name = "Sound Blaster ViBRA 16S", .internal_name = "sb_vibra16s", .flags = DEVICE_ISA | DEVICE_AT, .local = FM_YMF289B, @@ -3889,7 +3889,7 @@ const device_t sb_vibra16s_device = { }; const device_t sb_vibra16xv_device = { - .name = "Sound Blaster Vibra 16XV", + .name = "Sound Blaster ViBRA 16XV", .internal_name = "sb_vibra16xv", .flags = DEVICE_ISA | DEVICE_AT, .local = 0, @@ -3903,7 +3903,7 @@ const device_t sb_vibra16xv_device = { }; const device_t sb_vibra16c_onboard_device = { - .name = "Sound Blaster Vibra 16C (On-Board)", + .name = "Sound Blaster ViBRA 16C (On-Board)", .internal_name = "sb_vibra16c_onboard", .flags = DEVICE_ISA | DEVICE_AT, .local = 1, @@ -3917,7 +3917,7 @@ const device_t sb_vibra16c_onboard_device = { }; const device_t sb_vibra16c_device = { - .name = "Sound Blaster Vibra 16C", + .name = "Sound Blaster ViBRA 16C", .internal_name = "sb_vibra16c", .flags = DEVICE_ISA | DEVICE_AT, .local = 1, diff --git a/src/unix/assets/86Box.spec b/src/unix/assets/86Box.spec index 255eca87f..1dfcbb214 100644 --- a/src/unix/assets/86Box.spec +++ b/src/unix/assets/86Box.spec @@ -12,10 +12,10 @@ # After a successful build, you can install the RPMs as follows: # sudo dnf install RPMS/$(uname -m)/86Box-3* RPMS/noarch/86Box-roms* -%global romver 4.0 +%global romver 4.0.1 Name: 86Box -Version: 4.0 +Version: 4.0.1 Release: 1%{?dist} Summary: Classic PC emulator License: GPLv2+ @@ -121,5 +121,5 @@ popd %{_datadir}/%{name}/roms %changelog -* Sat Aug 26 2023 Robert de Rooy 4.0-1 +* Thu Oct 12 2023 Robert de Rooy 4.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 59671d0f9..f883aa0cd 100644 --- a/src/unix/assets/net.86box.86Box.metainfo.xml +++ b/src/unix/assets/net.86box.86Box.metainfo.xml @@ -10,7 +10,7 @@ net.86box.86Box.desktop - + diff --git a/vcpkg.json b/vcpkg.json index af8c75545..815ce2cd9 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "86box", - "version-string": "4.0", + "version-string": "4.0.1", "homepage": "https://86box.net/", "documentation": "https://86box.readthedocs.io/", "license": "GPL-2.0-or-later",