def addc(i1, i2, carry):
        return (Cat(C(1), i1) + Cat(carry, i2))[1:]

    def prefetch(self, m):
        m.d.comb += [self.a.eq(self.r_pc), self.rw.eq(1), self.sync.eq(0)]
        m.d.phi2 += self.r_pc.eq(self.r_pc + 1)
        with m.If(~self.irq | ~self.nmi | self.nmi_pending):
            m.d.phi2 += self.ir.eq(0x00)
            m.d.phi2 += self.irq_taken.eq(1)
        with m.Else():
            m.d.phi2 += self.ir.eq(self.di)
        m.d.phi2 += self.step.eq(0)