Add microsoft RAMCard & SystemCard to ISAMem

This commit is contained in:
Jasmine Iwanek
2022-03-18 16:29:06 -04:00
parent f7e91c4e2c
commit 3d0db78ead

View File

@@ -88,11 +88,13 @@
#define ISAMEM_IBMXT_CARD 0 #define ISAMEM_IBMXT_CARD 0
#define ISAMEM_GENXT_CARD 1 #define ISAMEM_GENXT_CARD 1
#define ISAMEM_IBMAT_CARD 2 #define ISAMEM_RAMCARD_CARD 2
#define ISAMEM_GENAT_CARD 3 #define ISAMEM_SYSTEMCARD_CARD 3
#define ISAMEM_P5PAK_CARD 4 #define ISAMEM_IBMAT_CARD 4
#define ISAMEM_A6PAK_CARD 5 #define ISAMEM_GENAT_CARD 5
#define ISAMEM_EMS5150_CARD 6 #define ISAMEM_P5PAK_CARD 6
#define ISAMEM_A6PAK_CARD 7
#define ISAMEM_EMS5150_CARD 8
#define ISAMEM_EV159_CARD 10 #define ISAMEM_EV159_CARD 10
#define ISAMEM_RAMPAGEXT_CARD 11 #define ISAMEM_RAMPAGEXT_CARD 11
#define ISAMEM_ABOVEBOARD_CARD 12 #define ISAMEM_ABOVEBOARD_CARD 12
@@ -416,6 +418,8 @@ isamem_init(const device_t *info)
switch(dev->board) { switch(dev->board) {
case ISAMEM_IBMXT_CARD: /* IBM PC/XT Memory Expansion Card */ case ISAMEM_IBMXT_CARD: /* IBM PC/XT Memory Expansion Card */
case ISAMEM_GENXT_CARD: /* Generic PC/XT Memory Expansion Card */ case ISAMEM_GENXT_CARD: /* Generic PC/XT Memory Expansion Card */
case ISAMEM_RAMCARD_CARD: /* Microsoft RAMCard for IBM PC */
case ISAMEM_SYSTEMCARD_CARD: /* Microsoft SystemCard */
case ISAMEM_P5PAK_CARD: /* Paradise Systems 5-PAK */ case ISAMEM_P5PAK_CARD: /* Paradise Systems 5-PAK */
case ISAMEM_A6PAK_CARD: /* AST SixPakPlus */ case ISAMEM_A6PAK_CARD: /* AST SixPakPlus */
dev->total_size = device_get_config_int("size"); dev->total_size = device_get_config_int("size");
@@ -736,6 +740,66 @@ static const device_t genericxt_device = {
.config = genericxt_config .config = genericxt_config
}; };
static const device_config_t msramcard_config[] = {
// clang-format off
{
"size", "Memory Size", CONFIG_SPINNER, "", 64, "",
{ 0, 256, 64 },
{ { 0 } }
},
{
"start", "Start Address", CONFIG_SPINNER, "", 0, "",
{ 0, 624, 64 },
{ { 0 } }
},
{ "", "", -1 }
// clang-format on
};
static const device_t msramcard_device = {
.name = "Microsoft RAMCard for IBM PC",
.internal_name = "msramcard",
.flags = DEVICE_ISA,
.local = ISAMEM_RAMCARD_CARD,
.init = isamem_init,
.close = isamem_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = msramcard_config
};
static const device_config_t mssystemcard_config[] = {
// clang-format off
{
"size", "Memory Size", CONFIG_SPINNER, "", 64, "",
{ 0, 256, 64 },
{ { 0 } }
},
{
"start", "Start Address", CONFIG_SPINNER, "", 0, "",
{ 0, 624, 64 },
{ { 0 } }
},
{ "", "", -1 }
// clang-format on
};
static const device_t mssystemcard_device = {
.name = "Microsoft SystemCard",
.internal_name = "mssystemcard",
.flags = DEVICE_ISA,
.local = ISAMEM_SYSTEMCARD_CARD,
.init = isamem_init,
.close = isamem_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = mssystemcard_config
};
static const device_config_t ibmat_config[] = { static const device_config_t ibmat_config[] = {
// clang-format off // clang-format off
{ {
@@ -1178,25 +1242,27 @@ static const struct {
const device_t *dev; const device_t *dev;
} boards[] = { } boards[] = {
// clang-format off // clang-format off
{ &isa_none_device }, { &isa_none_device },
{ &ibmxt_device }, { &ibmxt_device },
{ &genericxt_device }, { &genericxt_device },
{ &ibmat_device }, { &msramcard_device },
{ &genericat_device }, { &mssystemcard_device },
{ &p5pak_device }, { &ibmat_device },
{ &a6pak_device }, { &genericat_device },
{ &ems5150_device }, { &p5pak_device },
{ &ev159_device }, { &a6pak_device },
{ &ems5150_device },
{ &ev159_device },
#if defined(DEV_BRANCH) && defined(USE_ISAMEM_BRAT) #if defined(DEV_BRANCH) && defined(USE_ISAMEM_BRAT)
{ &brat_device }, { &brat_device },
#endif #endif
#if defined(DEV_BRANCH) && defined(USE_ISAMEM_RAMPAGE) #if defined(DEV_BRANCH) && defined(USE_ISAMEM_RAMPAGE)
{ &rampage_device }, { &rampage_device },
#endif #endif
#if defined(DEV_BRANCH) && defined(USE_ISAMEM_IAB) #if defined(DEV_BRANCH) && defined(USE_ISAMEM_IAB)
{ &iab_device }, { &iab_device },
#endif #endif
{ NULL } { NULL }
// clang-format on // clang-format on
}; };