use super::{Cpu, Variant};
use crate::types::{ClockEdge, MachineCycle, Registers, UndocumentedFlags};
impl Cpu {
#[must_use]
pub fn registers(&self) -> &Registers {
&self.registers
}
pub fn registers_mut(&mut self) -> &mut Registers {
&mut self.registers
}
#[must_use]
pub fn machine_cycle(&self) -> MachineCycle {
self.machine_cycle
}
#[must_use]
pub fn t_state(&self) -> u8 {
self.t_state
}
#[must_use]
pub fn clock_edge(&self) -> ClockEdge {
self.clock_edge
}
#[must_use]
pub fn is_halted(&self) -> bool {
self.halted()
}
pub fn set_halted(&mut self, halted: bool) {
self.set_halted_to(halted);
}
pub fn set_interrupt_requested(&mut self, requested: bool) {
self.set_interrupt_requested_to(requested);
}
#[must_use]
pub fn is_interrupt_requested(&self) -> bool {
self.interrupt_requested()
}
pub fn request_nmi(&mut self) {
self.set_nmi_requested_to(true);
}
#[must_use]
pub fn is_nmi_requested(&self) -> bool {
self.nmi_requested()
}
pub fn set_z80n_enabled(&mut self, enabled: bool) {
self.variant = if enabled { Variant::Z80n } else { Variant::Z80 };
}
#[must_use]
pub fn is_z80n_enabled(&self) -> bool {
matches!(self.variant, Variant::Z80n)
}
pub fn set_undocumented_flags(&mut self, source: UndocumentedFlags) {
self.undocumented_flags = source;
}
#[must_use]
pub fn undocumented_flags(&self) -> UndocumentedFlags {
self.undocumented_flags
}
pub fn exchange_register_set(&mut self) {
core::mem::swap(&mut self.registers.bc, &mut self.registers.bc_alt);
core::mem::swap(&mut self.registers.de, &mut self.registers.de_alt);
core::mem::swap(&mut self.registers.hl, &mut self.registers.hl_alt);
}
pub fn exchange_accumulator(&mut self) {
core::mem::swap(&mut self.registers.af, &mut self.registers.af_alt);
}
}