More cleanup changes for the remapping. All machine-init functions now call mem_top_remap themselves, this is no longer inherited. machine_at_*_remap_init() functions removed.
As an initial test, added remap to the NEAT - that works.
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Standard PC/AT implementation.
|
* Standard PC/AT implementation.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at.c 1.0.9 2018/05/06
|
* Version: @(#)m_at.c 1.0.10 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -76,6 +76,17 @@ machine_at_init(const machine_t *model, void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
machine_at_ibm_init(const machine_t *model, void *arg)
|
||||||
|
{
|
||||||
|
machine_at_init(model, arg);
|
||||||
|
|
||||||
|
mem_remap_top(384);
|
||||||
|
|
||||||
|
device_add(&fdc_at_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
machine_at_ps2_init(const machine_t *model, void *arg)
|
machine_at_ps2_init(const machine_t *model, void *arg)
|
||||||
{
|
{
|
||||||
@@ -110,30 +121,3 @@ machine_at_ps2_ide_init(const machine_t *model, void *arg)
|
|||||||
|
|
||||||
device_add(&ide_isa_2ch_opt_device);
|
device_add(&ide_isa_2ch_opt_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
machine_at_top_remap_init(const machine_t *model, void *arg)
|
|
||||||
{
|
|
||||||
machine_at_init(model, arg);
|
|
||||||
|
|
||||||
mem_remap_top_384k();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
machine_at_ide_top_remap_init(const machine_t *model, void *arg)
|
|
||||||
{
|
|
||||||
machine_at_ide_init(model, arg);
|
|
||||||
|
|
||||||
mem_remap_top_384k();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
machine_at_ibm_init(const machine_t *model, void *arg)
|
|
||||||
{
|
|
||||||
machine_at_top_remap_init(model, arg);
|
|
||||||
|
|
||||||
device_add(&fdc_at_device);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of the Commodore PC3 system.
|
* Implementation of the Commodore PC3 system.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_commodore.c 1.0.7 2018/05/06
|
* Version: @(#)m_at_commodore.c 1.0.8 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include "../emu.h"
|
#include "../emu.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
|
#include "../mem.h"
|
||||||
#include "../device.h"
|
#include "../device.h"
|
||||||
#include "../devices/ports/parallel.h"
|
#include "../devices/ports/parallel.h"
|
||||||
#include "../devices/ports/serial.h"
|
#include "../devices/ports/serial.h"
|
||||||
@@ -90,7 +91,9 @@ pc3_init(void)
|
|||||||
void
|
void
|
||||||
machine_at_cmdpc_init(const machine_t *model, void *arg)
|
machine_at_cmdpc_init(const machine_t *model, void *arg)
|
||||||
{
|
{
|
||||||
machine_at_ide_top_remap_init(model, arg);
|
machine_at_ide_init(model, arg);
|
||||||
|
|
||||||
|
mem_remap_top(384);
|
||||||
|
|
||||||
device_add(&fdc_at_device);
|
device_add(&fdc_at_device);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Emulation of various Compaq PC's.
|
* Emulation of various Compaq PC's.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_compaq.c 1.0.6 2018/05/06
|
* Version: @(#)m_at_compaq.c 1.0.7 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -120,7 +120,10 @@ write_raml(uint32_t addr, uint32_t val, void *priv)
|
|||||||
void
|
void
|
||||||
machine_at_compaq_init(const machine_t *model, void *arg)
|
machine_at_compaq_init(const machine_t *model, void *arg)
|
||||||
{
|
{
|
||||||
machine_at_top_remap_init(model, arg);
|
machine_at_init(model, arg);
|
||||||
|
|
||||||
|
mem_remap_top(384);
|
||||||
|
|
||||||
device_add(&fdc_at_device);
|
device_add(&fdc_at_device);
|
||||||
|
|
||||||
mem_mapping_add(&ram_mapping, 0xfa0000, 0x60000,
|
mem_mapping_add(&ram_mapping, 0xfa0000, 0x60000,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
* This is the chipset used in the AMI 286 clone model.
|
* This is the chipset used in the AMI 286 clone model.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_neat.c 1.0.6 2018/05/06
|
* Version: @(#)m_at_neat.c 1.0.7 2018/07/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include "../emu.h"
|
#include "../emu.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
|
#include "../mem.h"
|
||||||
#include "../device.h"
|
#include "../device.h"
|
||||||
#include "../devices/input/keyboard.h"
|
#include "../devices/input/keyboard.h"
|
||||||
#include "../devices/floppy/fdd.h"
|
#include "../devices/floppy/fdd.h"
|
||||||
@@ -134,6 +135,7 @@ void
|
|||||||
machine_at_neat_init(const machine_t *model, void *arg)
|
machine_at_neat_init(const machine_t *model, void *arg)
|
||||||
{
|
{
|
||||||
machine_at_init(model, arg);
|
machine_at_init(model, arg);
|
||||||
|
|
||||||
device_add(&fdc_at_device);
|
device_add(&fdc_at_device);
|
||||||
|
|
||||||
neat_init();
|
neat_init();
|
||||||
@@ -145,7 +147,11 @@ machine_at_neat_ami_init(const machine_t *model, void *arg)
|
|||||||
{
|
{
|
||||||
machine_at_common_init(model, arg);
|
machine_at_common_init(model, arg);
|
||||||
|
|
||||||
|
/* For testing, enable the remap (no shadowram.) */
|
||||||
|
mem_remap_top(384);
|
||||||
|
|
||||||
device_add(&keyboard_at_ami_device);
|
device_add(&keyboard_at_ami_device);
|
||||||
|
|
||||||
device_add(&fdc_at_device);
|
device_add(&fdc_at_device);
|
||||||
|
|
||||||
neat_init();
|
neat_init();
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
* The reserved 384K is remapped to the top of extended memory.
|
* The reserved 384K is remapped to the top of extended memory.
|
||||||
* If this is not done then you get an error on startup.
|
* If this is not done then you get an error on startup.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_ps1.c 1.0.19 2018/05/06
|
* Version: @(#)m_ps1.c 1.0.20 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -556,7 +556,7 @@ ps1_common_init(const machine_t *model, void *arg)
|
|||||||
machine_common_init(model, arg);
|
machine_common_init(model, arg);
|
||||||
game_enabled = i;
|
game_enabled = i;
|
||||||
|
|
||||||
mem_remap_top_384k();
|
mem_remap_top(384);
|
||||||
|
|
||||||
pit_set_out_func(&pit, 1, pit_refresh_timer_at);
|
pit_set_out_func(&pit, 1, pit_refresh_timer_at);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of MCA-based PS/2 machines.
|
* Implementation of MCA-based PS/2 machines.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_ps2_mca.c 1.0.16 2018/08/20
|
* Version: @(#)m_ps2_mca.c 1.0.17 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -861,7 +861,8 @@ static void ps2_mca_board_model_50_init()
|
|||||||
{
|
{
|
||||||
ps2_mca_board_common_init();
|
ps2_mca_board_common_init();
|
||||||
|
|
||||||
mem_remap_top_384k();
|
mem_remap_top(384);
|
||||||
|
|
||||||
mca_init(4);
|
mca_init(4);
|
||||||
|
|
||||||
ps2.planar_read = model_50_read;
|
ps2.planar_read = model_50_read;
|
||||||
@@ -893,7 +894,7 @@ static void ps2_mca_board_model_55sx_init()
|
|||||||
MEM_MAPPING_INTERNAL,
|
MEM_MAPPING_INTERNAL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
mem_remap_top_256k();
|
mem_remap_top(256);
|
||||||
ps2.option[3] = 0x10;
|
ps2.option[3] = 0x10;
|
||||||
|
|
||||||
memset(ps2.memory_bank, 0xf0, 8);
|
memset(ps2.memory_bank, 0xf0, 8);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Handling of the emulated machines.
|
* Handling of the emulated machines.
|
||||||
*
|
*
|
||||||
* Version: @(#)machine.h 1.0.21 2018/06/14
|
* Version: @(#)machine.h 1.0.22 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -259,14 +259,11 @@ extern void machine_common_init(const machine_t *, void *);
|
|||||||
|
|
||||||
extern void machine_at_common_init(const machine_t *, void *);
|
extern void machine_at_common_init(const machine_t *, void *);
|
||||||
extern void machine_at_init(const machine_t *, void *);
|
extern void machine_at_init(const machine_t *, void *);
|
||||||
|
extern void machine_at_ibm_init(const machine_t *, void *);
|
||||||
extern void machine_at_ps2_init(const machine_t *, void *);
|
extern void machine_at_ps2_init(const machine_t *, void *);
|
||||||
extern void machine_at_common_ide_init(const machine_t *, void *);
|
extern void machine_at_common_ide_init(const machine_t *, void *);
|
||||||
extern void machine_at_ide_init(const machine_t *, void *);
|
extern void machine_at_ide_init(const machine_t *, void *);
|
||||||
extern void machine_at_ps2_ide_init(const machine_t *, void *);
|
extern void machine_at_ps2_ide_init(const machine_t *, void *);
|
||||||
extern void machine_at_top_remap_init(const machine_t *, void *);
|
|
||||||
extern void machine_at_ide_top_remap_init(const machine_t *, void *);
|
|
||||||
|
|
||||||
extern void machine_at_ibm_init(const machine_t *, void *);
|
|
||||||
|
|
||||||
extern void machine_at_t3100e_init(const machine_t *, void *);
|
extern void machine_at_t3100e_init(const machine_t *, void *);
|
||||||
|
|
||||||
|
|||||||
27
src/mem.c
27
src/mem.c
@@ -12,7 +12,7 @@
|
|||||||
* the DYNAMIC_TABLES=1 enables this. Will eventually go
|
* the DYNAMIC_TABLES=1 enables this. Will eventually go
|
||||||
* away, either way...
|
* away, either way...
|
||||||
*
|
*
|
||||||
* Version: @(#)mem.c 1.0.16 2018/08/20
|
* Version: @(#)mem.c 1.0.17 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -1763,22 +1763,23 @@ mem_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
void
|
||||||
mem_remap_top(int max_size)
|
mem_remap_top(int kb)
|
||||||
{
|
{
|
||||||
uint32_t start = (mem_size >= 1024) ? mem_size : 1024;
|
uint32_t start = (mem_size >= 1024) ? mem_size : 1024;
|
||||||
int size = mem_size - 640;
|
int size = mem_size - 640;
|
||||||
|
|
||||||
pclog("MEM: remapping top %iKB (mem=%i)\n", max_size, mem_size);
|
pclog("MEM: remapping top %iKB (mem=%i)\n", kb, mem_size);
|
||||||
if (mem_size <= 640) return;
|
if (mem_size <= 640) return;
|
||||||
|
|
||||||
if (size > max_size)
|
if (size > kb)
|
||||||
size = max_size;
|
size = kb;
|
||||||
|
|
||||||
mem_set_mem_state(start * 1024, size * 1024,
|
mem_set_mem_state(start * 1024, size * 1024,
|
||||||
MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||||
mem_mapping_set_addr(&ram_remapped_mapping, start * 1024, size * 1024);
|
mem_mapping_set_addr(&ram_remapped_mapping, start * 1024, size * 1024);
|
||||||
#if 0
|
#if 0
|
||||||
|
//FIXME: was this a typo for mem_remapped_mapping? --FvK
|
||||||
mem_mapping_set_exec(&ram_split_mapping, ram + (start * 1024));
|
mem_mapping_set_exec(&ram_split_mapping, ram + (start * 1024));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1786,20 +1787,6 @@ pclog("MEM: remapping top %iKB (mem=%i)\n", max_size, mem_size);
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
mem_remap_top_256k(void)
|
|
||||||
{
|
|
||||||
mem_remap_top(256);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
mem_remap_top_384k(void)
|
|
||||||
{
|
|
||||||
mem_remap_top(384);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
mem_reset_page_blocks(void)
|
mem_reset_page_blocks(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Definitions for the memory interface.
|
* Definitions for the memory interface.
|
||||||
*
|
*
|
||||||
* Version: @(#)mem.h 1.0.8 2018/08/20
|
* Version: @(#)mem.h 1.0.9 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Sarah Walker, <tommowalker@tommowalker.co.uk>
|
* Sarah Walker, <tommowalker@tommowalker.co.uk>
|
||||||
@@ -259,8 +259,7 @@ extern void mem_add_bios(void);
|
|||||||
|
|
||||||
extern void mem_init(void);
|
extern void mem_init(void);
|
||||||
extern void mem_reset(void);
|
extern void mem_reset(void);
|
||||||
extern void mem_remap_top_256k(void);
|
extern void mem_remap_top(int kb);
|
||||||
extern void mem_remap_top_384k(void);
|
|
||||||
|
|
||||||
extern uint8_t port_92_read(uint16_t port, void *priv);
|
extern uint8_t port_92_read(uint16_t port, void *priv);
|
||||||
extern void port_92_write(uint16_t port, uint8_t val, void *priv);
|
extern void port_92_write(uint16_t port, uint8_t val, void *priv);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Define application version and build info.
|
* Define application version and build info.
|
||||||
*
|
*
|
||||||
* Version: @(#)version.h 1.0.17 2018/07/28
|
* Version: @(#)version.h 1.0.18 2018/08/12
|
||||||
*
|
*
|
||||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
*
|
*
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
#define EMU_VER_MAJOR 0
|
#define EMU_VER_MAJOR 0
|
||||||
#define EMU_VER_MINOR 1
|
#define EMU_VER_MINOR 1
|
||||||
#define EMU_VER_REV 6
|
#define EMU_VER_REV 6
|
||||||
#define EMU_VER_PATCH 2
|
#define EMU_VER_PATCH 3
|
||||||
|
|
||||||
|
|
||||||
/* Standard C preprocessor macros. */
|
/* Standard C preprocessor macros. */
|
||||||
|
|||||||
Reference in New Issue
Block a user