1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Adds bare minimum to get accepted 16- and 32kb cartridges to start on the MSX.

This commit is contained in:
Thomas Harte 2017-12-02 16:06:04 -05:00
parent ca26ce8400
commit 7f8a13a409
2 changed files with 12 additions and 2 deletions

View File

@ -71,9 +71,20 @@ class ConcreteMachine:
}
void configure_as_target(const StaticAnalyser::Target &target) override {
insert_media(target.media);
}
bool insert_media(const StaticAnalyser::Media &media) override {
if(!media.cartridges.empty()) {
const auto &segment = media.cartridges.front()->get_segments().front();
cartridge_ = segment.data;
// TODO: should clear other page 1 pointers, should allow for paging cartridges, etc.
size_t base = segment.start_address >> 14;
for(size_t c = 0; c < cartridge_.size(); c += 16384) {
slot_read_pointers_[1][(c >> 14) + base] = cartridge_.data() + c;
}
}
return true;
}
@ -275,6 +286,7 @@ class ConcreteMachine:
uint8_t scratch_[16384];
uint8_t unpopulated_[16384];
std::vector<uint8_t> basic_, main_;
std::vector<uint8_t> cartridge_;
HalfCycles time_since_vdp_update_;
HalfCycles time_until_interrupt_;

View File

@ -52,8 +52,6 @@ static std::list<std::shared_ptr<Storage::Cartridge::Cartridge>>
}
// That'll do then, but apply the detected start address.
// printf("%04x\n", start_address);
msx_cartridges.emplace_back(new Storage::Cartridge::Cartridge({
Storage::Cartridge::Cartridge::Segment(start_address, segment.data)
}));