1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-19 08:31:11 +00:00

Merge pull request #1127 from TomHarte/MapperReadback

Permit MSX RAM mapper readback.
This commit is contained in:
Thomas Harte 2023-04-29 23:54:35 -04:00 committed by GitHub
commit 5f151c07ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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.