1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-01-11 08:30:55 +00:00

Permit MSX RAM mapper readback.

This commit is contained in:
Thomas Harte 2023-04-29 23:48:22 -04:00
parent 19d03dd4fd
commit 1f4d526ea5

View File

@ -595,6 +595,13 @@ class ConcreteMachine:
*cycle.value = clock_.read(next_clock_register_);
break;
case 0xfc: case 0xfd: case 0xfe: case 0xff:
if constexpr (model != Target::Model::MSX1) {
*cycle.value = ram_mapper_[(address & 0xff) - 0xfc];
break;
}
[[fallthrough]];
default:
// printf("Unhandled read %02x\n", address & 0xff);
*cycle.value = 0xff;
@ -643,6 +650,8 @@ class ConcreteMachine:
break;
}
ram_mapper_[port - 0xfc] = *cycle.value;
// Apply to RAM.
//
// On a real MSX this may also affect other slots.
@ -877,6 +886,7 @@ class ConcreteMachine:
// 8kb resolution is used by some cartride titles.
const uint8_t *read_pointers_[8];
uint8_t *write_pointers_[8];
uint8_t ram_mapper_[4]{};
/// Optionally attaches non-default logic to any of the four things selectable
/// via the primary slot register.