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:
waltje
2018-08-20 20:06:22 -04:00
parent ed871b3c27
commit 3be39f9792
10 changed files with 48 additions and 68 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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. */