From 9d7cffb7a84a3bb847aa6b2fa696e60acd8fb7fe Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Mon, 3 Jun 2024 00:07:32 -0400 Subject: [PATCH 1/2] Improve EMS logging --- src/device/isamem.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/device/isamem.c b/src/device/isamem.c index 0eac6d097..2c76939e2 100644 --- a/src/device/isamem.c +++ b/src/device/isamem.c @@ -315,9 +315,7 @@ ems_read(uint16_t port, void *priv) break; } -#if ISAMEM_DEBUG - isamem_log("ISAMEM: read(%04x) = %02x)\n", port, ret); -#endif + isamem_log("ISAMEM: read(%04x) = %02x) page=%d\n", port, ret, vpage); return ret; } @@ -333,12 +331,13 @@ consecutive_ems_read(uint16_t port, void *priv) /* Get the viewport page number. */ vpage = (port - dev->base_addr); - isamem_log("ISAMEM: read(%04x) = %02x) page=%d\n", port, ret, vpage); - + ret = dev->ems[vpage].page; if (dev->ems[vpage].enabled) ret |= 0x80; + isamem_log("ISAMEM: read(%04x) = %02x) page=%d\n", port, ret, vpage); + return ret; } @@ -353,12 +352,10 @@ ems_write(uint16_t port, uint8_t val, void *priv) vpage = (port / EMS_PGSIZE); port &= (EMS_PGSIZE - 1); -#if ISAMEM_DEBUG - isamem_log("ISAMEM: write(%04x, %02x) page=%d\n", port, val, vpage); -#endif - switch (port - dev->base_addr) { case 0x0000: /* page mapping registers */ + isamem_log("ISAMEM: write(%04x, %02x) to page mapping registers! page=%d\n", port, val, vpage); + /* Set the page number. */ dev->ems[vpage].enabled = (val & 0x80); dev->ems[vpage].page = (val & 0x7f); @@ -385,6 +382,8 @@ ems_write(uint16_t port, uint8_t val, void *priv) break; case 0x0001: /* page frame registers */ + isamem_log("ISAMEM: write(%04x, %02x) to page frame registers! page=%d\n", port, val, vpage); + /* * The EV-159 EMM driver configures the frame address * by setting bits in these registers. The information @@ -403,7 +402,6 @@ ems_write(uint16_t port, uint8_t val, void *priv) * 80 c0 e0 DC000 * 80 c0 e0 E0000 */ - isamem_log("EMS: write(%02x) to register 1 !\n"); dev->ems[vpage].frame = val; dev->frame_addr = 0x000c4000 + ((((dev->ems[2].frame & 0x80) >> 5) || ((dev->ems[1].frame & 0x80) >> 6) || @@ -429,9 +427,8 @@ consecutive_ems_write(uint16_t port, uint8_t val, void *priv) /* Get the viewport page number. */ vpage = (port - dev->base_addr); - isamem_log("ISAMEM: write(%04x, %02x) page=%d\n", port, val, vpage); + isamem_log("ISAMEM: write(%04x, %02x) to page mapping registers! (page=%d)\n", port, val, vpage); - isamem_log("EMS: write(%02x) to register 0! (%02x)\n", val); /* Set the page number. */ dev->ems[vpage].enabled = 1; dev->ems[vpage].page = val; From 99957425f022ddbdbf1ba7d26ff2a9cb32d3061d Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Mon, 3 Jun 2024 00:39:05 -0400 Subject: [PATCH 2/2] Yet more improvements to Rampage/XT --- src/device/isamem.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/device/isamem.c b/src/device/isamem.c index 2c76939e2..ba60ddd2a 100644 --- a/src/device/isamem.c +++ b/src/device/isamem.c @@ -529,6 +529,14 @@ isamem_init(const device_t *info) break; case ISAMEM_RAMPAGEXT_CARD: /* AST RAMpage/XT */ + dev->base_addr = device_get_config_hex16("base"); + dev->total_size = device_get_config_int("size"); + dev->start_addr = device_get_config_int("start"); + tot = dev->total_size; + dev->flags |= FLAG_EMS; + dev->frame_addr = 0xE0000; + break; + case ISAMEM_ABOVEBOARD_CARD: /* Intel AboveBoard */ case ISAMEM_BRAT_CARD: /* BocaRAM/AT */ dev->base_addr = device_get_config_hex16("base"); @@ -1670,7 +1678,7 @@ static const device_config_t rampage_config[] = { .description = "Address", .type = CONFIG_HEX16, .default_string = "", - .default_int = 0x0258, + .default_int = 0x0218, .file_filter = "", .spinner = { 0 }, .selection = { @@ -1684,22 +1692,6 @@ static const device_config_t rampage_config[] = { { .description = "" } }, }, - { - .name = "frame", - .description = "Frame Address", - .type = CONFIG_HEX20, - .default_string = "", - .default_int = 0, - .file_filter = "", - .spinner = { 0 }, - .selection = { - { .description = "Disabled", .value = 0x00000 }, - { .description = "C000H", .value = 0xC0000 }, - { .description = "D000H", .value = 0xD0000 }, - { .description = "E000H", .value = 0xE0000 }, - { .description = "" } - }, - }, { .name = "size", .description = "Memory Size", @@ -1714,6 +1706,19 @@ static const device_config_t rampage_config[] = { }, .selection = { { 0 } } }, + { + .name = "start", + .description = "Start Address", + .type = CONFIG_SPINNER, + .default_string = "", + .default_int = 640, + .file_filter = "", + .spinner = { + .min = 0, + .max = 640, + .step = 64 + }, + }, { .name = "", .description = "", .type = CONFIG_END } // clang-format on };