Fixed memory states set by some machines (including IBM PS/1's and MCA PS/2's).
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
* Sarah Walker, <tommowalker@tommowalker.co.uk>
|
||||
*
|
||||
* 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);
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user