Merge branch 'master' into feature/ich2

This commit is contained in:
Jasmine Iwanek
2023-10-11 21:10:29 -04:00
14 changed files with 16 additions and 322 deletions

View File

@@ -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)

View File

@@ -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)

4
debian/changelog vendored
View File

@@ -1,5 +1,5 @@
86box (4.0) UNRELEASED; urgency=medium
86box (4.0.1) UNRELEASED; urgency=medium
* Bump release.
-- Jasmine Iwanek <jriwanek@gmail.com> Tue, 28 Feb 2023 00:02:16 -0500
-- Jasmine Iwanek <jriwanek@gmail.com> Thu, 12 Oct 2023 00:00:31 +0200

View File

@@ -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)

View File

@@ -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, <hrdlickadavid@outlook.com>
#
# Copyright 2020-2021 David Hrdlička.
#
add_library(808x OBJECT queue.c)

View File

@@ -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, <https://github.com/dbalsom>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2023 gloriouscow.
* Copyright 2023 Miran Grca.
*/
#include <inttypes.h>
#include <math.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#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);
}

View File

@@ -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, <https://github.com/dbalsom>
* Miran Grca, <mgrca8@gmail.com>
*
* 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*/

View File

@@ -36,6 +36,3 @@ endif()
add_subdirectory(softfloat)
target_link_libraries(86Box softfloat)
add_subdirectory(808x)
target_link_libraries(86Box 808x)

View File

@@ -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

View File

@@ -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)

View File

@@ -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,

View File

@@ -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 <robert.de.rooy[AT]gmail.com> 4.0-1
* Thu Oct 12 2023 Robert de Rooy <robert.de.rooy[AT]gmail.com> 4.0.1-1
- Bump release

View File

@@ -10,7 +10,7 @@
</categories>
<launchable type="desktop-id">net.86box.86Box.desktop</launchable>
<releases>
<release version="4.0" date="2023-02-28"/>
<release version="4.0.1" date="2023-10-12"/>
</releases>
<content_rating type="oars-1.1" />
<description>

View File

@@ -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",