From ccd0df5cff15b3977f30d0dff1f5370a6cf16e5e Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 1 Nov 2019 14:23:52 +0100 Subject: [PATCH 1/4] Fixed memory states set by some machines (including IBM PS/1's and MCA PS/2's). --- src/i82335.c | 8 ++++---- src/machine/m_ps1.c | 6 +++--- src/machine/m_ps2_mca.c | 14 +++++++------- src/machine/m_xt_laserxt.c | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/i82335.c b/src/i82335.c index b0043a1a5..37cf60306 100644 --- a/src/i82335.c +++ b/src/i82335.c @@ -42,7 +42,7 @@ void i82335_write(uint16_t addr, uint8_t val, void *priv) { for (i = 0; i < 8; i++) { - mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL); + mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_EXTANY); shadowbios = 0; } } @@ -69,7 +69,7 @@ void i82335_write(uint16_t addr, uint8_t val, void *priv) { for (i = 0; i < 8; i++) { - mem_set_mem_state(0xc0000, 0x20000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL); + mem_set_mem_state(0xc0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_EXTANY); shadowbios = 0; } } @@ -90,8 +90,8 @@ void i82335_write(uint16_t addr, uint8_t val, void *priv) { for (i = 0; i < 8; i++) { - mem_write = (val & 8) ? MEM_WRITE_DISABLED : MEM_WRITE_EXTERNAL; - mem_set_mem_state(0xa0000, 0x20000, MEM_READ_EXTERNAL | mem_write); + mem_write = (val & 8) ? MEM_WRITE_DISABLED : MEM_WRITE_EXTANY; + mem_set_mem_state(0xa0000, 0x20000, MEM_READ_EXTANY | mem_write); shadowbios = 0; } } diff --git a/src/machine/m_ps1.c b/src/machine/m_ps1.c index 0b214f50a..f82ccea96 100644 --- a/src/machine/m_ps1.c +++ b/src/machine/m_ps1.c @@ -28,7 +28,7 @@ * boot. Sometimes, they do, and then it shows an "Incorrect * DOS" error message?? --FvK * - * Version: @(#)m_ps1.c 1.0.15 2019/03/08 + * Version: @(#)m_ps1.c 1.0.16 2019/11/01 * * Authors: Sarah Walker, * Miran Grca, @@ -284,13 +284,13 @@ recalc_memory(ps1_t *ps) mem_set_mem_state(0x00000, 0x80000, (ps->ps1_e0_regs[0] & 0x01) ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : - (MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL)); + (MEM_READ_EXTANY | MEM_WRITE_EXTANY)); /* Enable 512-640K */ mem_set_mem_state(0x80000, 0x20000, (ps->ps1_e0_regs[1] & 0x01) ? (MEM_READ_INTERNAL | MEM_WRITE_INTERNAL) : - (MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL)); + (MEM_READ_EXTANY | MEM_WRITE_EXTANY)); } diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index 7a467e863..7eb011931 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -8,15 +8,15 @@ * * Implementation of MCA-based PS/2 machines. * - * Version: @(#)m_ps2_mca.c 1.0.5 2018/11/12 + * Version: @(#)m_ps2_mca.c 1.0.6 2019/11/01 * * Authors: Fred N. van Kempen, * Miran Grca, * Sarah Walker, * - * Copyright 2017,2018 Fred N. van Kempen. - * Copyright 2016-2018 Miran Grca. - * Copyright 2008-2018 Sarah Walker. + * Copyright 2017-2019 Fred N. van Kempen. + * Copyright 2016-2019 Miran Grca. + * Copyright 2008-2019 Sarah Walker. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -490,14 +490,14 @@ static void model_55sx_write(uint16_t port, uint8_t val) } else { - mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTERNAL | MEM_WRITE_INTERNAL); + mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_INTERNAL); mem_mapping_enable(&ps2.shadow_mapping); } if ((ps2.option[1] & 1) && !(ps2.option[3] & 0x20)) mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL); else - mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL); + mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_EXTANY | MEM_WRITE_EXTANY); break; case 0x106: ps2.subaddr_lo = val; @@ -972,7 +972,7 @@ static void mem_encoding_update() ps2.split_addr = ((uint32_t) (ps2.mem_regs[0] & 0xf)) << 20; if (ps2.mem_regs[1] & 2) { - mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTERNAL | MEM_WRITE_INTERNAL); + mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_INTERNAL); ps2_mca_log("PS/2 Model 80-111: ROM space enabled\n"); } else { mem_set_mem_state(0xe0000, 0x20000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED); diff --git a/src/machine/m_xt_laserxt.c b/src/machine/m_xt_laserxt.c index ddf715fb3..9caa2e41b 100644 --- a/src/machine/m_xt_laserxt.c +++ b/src/machine/m_xt_laserxt.c @@ -129,7 +129,7 @@ static void laserxt_init(int is_lxt3) mem_mapping_add(&laserxt_ems_mapping[i], 0xE0000 + (i << 14), 0x4000, mem_read_laserxtems, NULL, NULL, mem_write_laserxtems, NULL, NULL, ram + 0xA0000 + (i << 14), 0, NULL); mem_mapping_disable(&laserxt_ems_mapping[i]); } - mem_set_mem_state(0x0c0000, 0x40000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL); + mem_set_mem_state(0x0c0000, 0x40000, MEM_READ_EXTANY | MEM_WRITE_EXTANY); laserxt_is_lxt3 = is_lxt3; } From b6ae1098d77d9d38f9b31ed0a028c1e439126737 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 1 Nov 2019 20:47:52 +0100 Subject: [PATCH 2/4] Fixed IDE status readout on an absent device 1 with a present device 0, fixes hangs with AMI BIOS'es on hard disk detection in such cases. --- src/disk/hdc_ide.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index 1e44453c2..28f5ef7ae 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -9,7 +9,7 @@ * Implementation of the IDE emulation for hard disks and ATAPI * CD-ROM devices. * - * Version: @(#)hdc_ide.c 1.0.62 2019/10/31 + * Version: @(#)hdc_ide.c 1.0.63 2019/11/01 * * Authors: Sarah Walker, * Miran Grca, @@ -1631,10 +1631,12 @@ ide_read_data(ide_t *ide, int length) static uint8_t -ide_status(ide_t *ide, int ch) +ide_status(ide_t *ide, ide_t *ide_other, int ch) { - if (ide->type == IDE_NONE) + if ((ide->type == IDE_NONE) && ((ide_other->type == IDE_NONE) || !(ch & 1))) return 0x7F; /* Bit 7 pulled down, all other bits pulled up, per the spec. */ + else if ((ide->type == IDE_NONE) && (ch & 1)) + return 0x00; /* On real hardware, a slave with a present master always returns a status of 0x00. */ else if (ide->type == IDE_ATAPI) return (ide->sc->status & ~DSC_STAT) | (ide->service ? SERVICE_STAT : 0); else @@ -1727,7 +1729,7 @@ ide_readb(uint16_t addr, void *priv) DF (drive fault). */ case 0x7: /* Status */ ide_irq_lower(ide); - temp = ide_status(ide, ch); + temp = ide_status(ide, ide_drives[ch ^ 1], ch); break; } @@ -1751,7 +1753,7 @@ ide_read_alt_status(uint16_t addr, void *priv) /* Per the Seagate ATA-3 specification: Reading the alternate status does *NOT* clear the IRQ. */ - temp = ide_status(ide, ch); + temp = ide_status(ide, ide_drives[ch ^ 1], ch); ide_log("ide_read_alt_status(%04X, %08X) = %02X\n", addr, priv, temp); return temp; From f805899263287ce24822db06bd75cbc2ffd0ab4d Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 1 Nov 2019 20:53:33 +0100 Subject: [PATCH 3/4] 86Box v2.06 Stable/Final release. --- src/86box.h | 6 +++--- src/win/86Box.rc | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/86box.h b/src/86box.h index 6e9034139..260b6976d 100644 --- a/src/86box.h +++ b/src/86box.h @@ -8,7 +8,7 @@ * * Main include file for the application. * - * Version: @(#)86box.h 1.0.33 2019/11/01 + * Version: @(#)86box.h 1.0.34 2019/11/01 * * Authors: Miran Grca, *f Fred N. van Kempen, @@ -30,8 +30,8 @@ #define EMU_NAME "86Box" #define EMU_NAME_W L"86Box" #ifdef RELEASE_BUILD -#define EMU_VERSION "2.05" -#define EMU_VERSION_W L"2.05" +#define EMU_VERSION "2.06" +#define EMU_VERSION_W L"2.06" #else #define EMU_VERSION "2.10" #define EMU_VERSION_W L"2.10" diff --git a/src/win/86Box.rc b/src/win/86Box.rc index 543ed98b1..49c941934 100644 --- a/src/win/86Box.rc +++ b/src/win/86Box.rc @@ -8,7 +8,7 @@ * * Application resource script for Windows. * - * Version: @(#)86Box.rc 1.0.52 2019/11/01 + * Version: @(#)86Box.rc 1.0.53 2019/11/01 * * Authors: Miran Grca, * Fred N. van Kempen, @@ -225,7 +225,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,129,94,71,12 ICON 100,IDC_ABOUT_ICON,7,7,20,20 #ifdef RELEASE_BUILD - LTEXT "86Box v2.05 - An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2. See LICENSE for more information.", + LTEXT "86Box v2.06 - An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2. See LICENSE for more information.", IDC_ABOUT_ICON,54,7,146,73 #else LTEXT "86Box v2.10 - An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2. See LICENSE for more information.", @@ -980,8 +980,8 @@ END VS_VERSION_INFO VERSIONINFO #ifdef RELEASE_BUILD - FILEVERSION 2,5,0,0 - PRODUCTVERSION 2,5,0,0 + FILEVERSION 2,6,0,0 + PRODUCTVERSION 2,6,0,0 #else FILEVERSION 2,10,0,0 PRODUCTVERSION 2,10,0,0 @@ -1004,7 +1004,7 @@ BEGIN VALUE "CompanyName", "IRC #SoftHistory\0" VALUE "FileDescription", "86Box - an emulator for X86-based systems\0" #ifdef RELEASE_BUILD - VALUE "FileVersion", "2.05\0" + VALUE "FileVersion", "2.06\0" #else VALUE "FileVersion", "2.10\0" #endif @@ -1015,7 +1015,7 @@ BEGIN VALUE "PrivateBuild", "\0" VALUE "ProductName", "86Box Emulator\0" #ifdef RELEASE_BUILD - VALUE "ProductVersion", "2.05\0" + VALUE "ProductVersion", "2.06\0" #else VALUE "ProductVersion", "2.10\0" #endif From 79b1b5be5bf5318eb181dbbe0098fe7d55d5440d Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 1 Nov 2019 21:07:58 +0100 Subject: [PATCH 4/4] Removed an outdated note from the header of machine/m_ps1.c. --- src/machine/m_ps1.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/machine/m_ps1.c b/src/machine/m_ps1.c index f82ccea96..c58ccccec 100644 --- a/src/machine/m_ps1.c +++ b/src/machine/m_ps1.c @@ -22,12 +22,6 @@ * The reserved 384K is remapped to the top of extended memory. * If this is not done then you get an error on startup. * - * NOTES: Floppy does not seem to work. --FvK - * The "ROM DOS" shell does not seem to work. We do have the - * correct BIOS images now, and they do load, but they do not - * boot. Sometimes, they do, and then it shows an "Incorrect - * DOS" error message?? --FvK - * * Version: @(#)m_ps1.c 1.0.16 2019/11/01 * * Authors: Sarah Walker,