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:
@@ -1091,7 +1091,7 @@ private:
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Key::Break:
|
case Key::Break:
|
||||||
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(is_pressed);
|
set_reset(is_pressed);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1102,10 +1102,18 @@ private:
|
|||||||
bool was_caps_ = false;
|
bool was_caps_ = false;
|
||||||
|
|
||||||
void clear_all_keys() final {
|
void clear_all_keys() final {
|
||||||
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(false);
|
set_reset(false);
|
||||||
system_via_port_handler_.clear_all_keys();
|
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 {
|
HalfCycles get_typer_delay(const std::string &text) const final {
|
||||||
if(!m6502_.is_resetting()) {
|
if(!m6502_.is_resetting()) {
|
||||||
return Cycles(0);
|
return Cycles(0);
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ struct FIFO {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Empties the FIFO.
|
||||||
|
void reset() {
|
||||||
|
read_ = write_ = 0;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ULAT &ula_;
|
ULAT &ula_;
|
||||||
uint8_t mask_;
|
uint8_t mask_;
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public:
|
|||||||
void set_reset(const bool reset) {
|
void set_reset(const bool reset) {
|
||||||
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(reset);
|
m6502_.template set<CPU::MOS6502Mk2::Line::Reset>(reset);
|
||||||
rom_visible_ |= reset;
|
rom_visible_ |= reset;
|
||||||
|
update_interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public:
|
|||||||
void set_reset(const bool reset) {
|
void set_reset(const bool reset) {
|
||||||
z80_.set_reset_line(reset);
|
z80_.set_reset_line(reset);
|
||||||
rom_visible_ |= reset;
|
rom_visible_ |= reset;
|
||||||
|
update_interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
HalfCycles perform_machine_cycle(const CPU::Z80::PartialMachineCycle &cycle) {
|
HalfCycles perform_machine_cycle(const CPU::Z80::PartialMachineCycle &cycle) {
|
||||||
|
|||||||
@@ -113,6 +113,21 @@ struct ULA {
|
|||||||
default: __builtin_unreachable();
|
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:
|
private:
|
||||||
uint8_t status() const {
|
uint8_t status() const {
|
||||||
return flags_;
|
return flags_;
|
||||||
|
|||||||
Reference in New Issue
Block a user