1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-11-23 05:19:20 +00:00

Merge pull request #1627 from TomHarte/TubeReset

Propagate system reset to the tube.
This commit is contained in:
Thomas Harte
2025-11-04 23:24:20 -05:00
committed by GitHub
5 changed files with 32 additions and 2 deletions

View File

@@ -1091,7 +1091,7 @@ private:
break;
case Key::Break:
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(is_pressed);
set_reset(is_pressed);
break;
default:
@@ -1102,10 +1102,18 @@ private:
bool was_caps_ = false;
void clear_all_keys() final {
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(false);
set_reset(false);
system_via_port_handler_.clear_all_keys();
}
void set_reset(const bool reset) {
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(reset);
if constexpr (tube_processor != TubeProcessor::None) {
tube_.ula.set_reset(reset);
tube_.processor.set_reset(reset);
}
}
HalfCycles get_typer_delay(const std::string &text) const final {
if(!m6502_.is_resetting()) {
return Cycles(0);

View File

@@ -45,6 +45,11 @@ struct FIFO {
return result;
}
/// Empties the FIFO.
void reset() {
read_ = write_ = 0;
}
private:
ULAT &ula_;
uint8_t mask_;

View File

@@ -60,6 +60,7 @@ public:
void set_reset(const bool reset) {
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(reset);
rom_visible_ |= reset;
update_interrupts();
}
private:

View File

@@ -36,6 +36,7 @@ public:
void set_reset(const bool reset) {
z80_.set_reset_line(reset);
rom_visible_ |= reset;
update_interrupts();
}
HalfCycles perform_machine_cycle(const CPU::Z80::PartialMachineCycle &cycle) {

View File

@@ -113,6 +113,21 @@ struct ULA {
default: __builtin_unreachable();
}
}
void set_reset(const bool reset) {
if(reset) {
flags_ = 0x01;
to_parasite1_.reset();
to_parasite2_.reset();
to_parasite3_.reset();
to_parasite4_.reset();
to_host1_.reset();
to_host2_.reset();
to_host3_.reset();
to_host4_.reset();
}
}
private:
uint8_t status() const {
return flags_;