auto CPU::poll() -> void {
  if(!state.poll) return;

  for(int n = 7; n >= 0; n--) {
    if(!r.interruptEnable.bit(n)) continue;
    if(!r.interruptStatus.bit(n)) continue;
    state.halt = false;
    if(V30MZ::r.f.i) interrupt(r.interruptBase + n);
    return;
  }
}

auto CPU::raise(Interrupt irq) -> void {
  if(!r.interruptEnable.bit((uint)irq)) return;
  r.interruptStatus.bit((uint)irq) = 1;
}

auto CPU::lower(Interrupt irq) -> void {
  r.interruptStatus.bit((uint)irq) = 0;
}