def _checkInterrupts(self): if self.iff1: self.halted = Bits.reset() self.iff1 = Bits.reset() self.iff2 = Bits.reset() self.ram[--self.SP] = Bits.limitTo8Bits(self.pc) self.ram[--self.SP] = self.pc >> 8 self.R += 1 if self.im == 0 or self.im == 1: self.PC = 0x0038
def _checkInterrupts(self): if self.iff1 and self.generateInterrupt: self.generateInterrupt = False self.halted = Bits.reset() self.iff1 = Bits.reset() self.iff2 = Bits.reset() self.ram[--self.SP] = Bits.limitTo8Bits(self.pc) self.ram[--self.SP] = self.pc >> 8 self.R += 1 if self.im == 0 or self.im == 1: self.PC = 0x0038
def inc8(cpu, opcode, logger): index = (opcode >> 3) & 7 oldValue = cpu.regs[index] cpu.regs[index] = Bits.limitTo8Bits(cpu.regs[index] + 1) cpu.NFlag = Bits.reset() cpu.ZFlag = Bits.isZero(cpu.regs[index]) cpu.HFlag = Bits.halfCarrySub(oldValue, cpu.regs[index]) cpu.PVFlag = True if oldValue == 0x7f else False cpu.SFlag = Bits.isNegative(cpu.regs[index]) cpu.m_cycles, cpu.t_states = 1, 4 logger.info("INC {}".format(IndexToReg.translate8Bit(index)))
def AF(self, value): value = Bits.limitTo16Bits(value) self.regs[A] = value >> 8 self.regs[F] = Bits.limitTo8Bits(value)
def A(self, value): self.regs[A] = Bits.limitTo8Bits(value)
def DE(self, value): value = Bits.limitTo16Bits(value) self.regs[D] = value >> 8 self.regs[E] = Bits.limitTo8Bits(value)
def BC(self, value): value = Bits.limitTo16Bits(value) self.regs[B] = value >> 8 self.regs[C] = Bits.limitTo8Bits(value)
def HL(self, value): value = Bits.limitTo16Bits(value) self.regs[H] = value >> 8 self.regs[L] = Bits.limitTo8Bits(value)
def HL(self, value): value = Bits.limitTo16Bits(value) self.regs[H] = value >> 8 self.regs[L] = Bits.limitTo8Bits(value)
def A(self, value): self.regs[A] = Bits.limitTo8Bits(value)
def E(self, value): self.regs[E] = Bits.limitTo8Bits(value)
def BC(self, value): value = Bits.limitTo16Bits(value) self.regs[B] = value >> 8 self.regs[C] = Bits.limitTo8Bits(value)
def BCPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[B] = value >> 8 self.regsPri[C] = Bits.limitTo8Bits(value)
def DEPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[D] = value >> 8 self.regsPri[E] = Bits.limitTo8Bits(value)
def DE(self, value): value = Bits.limitTo16Bits(value) self.regs[D] = value >> 8 self.regs[E] = Bits.limitTo8Bits(value)
def HLPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[H] = value >> 8 self.regsPri[L] = Bits.limitTo8Bits(value)
def F(self, value): self.regs[F] = Bits.limitTo8Bits(value)
def R(self, value): self.r = Bits.limitTo8Bits(value)
def C(self, value): self.regs[C] = Bits.limitTo8Bits(value)
def __setitem__(self, addr, value): self.ram[addr] = Bits.limitTo8Bits(value)
def AF(self, value): value = Bits.limitTo16Bits(value) self.regs[A] = value >> 8 self.regs[F] = Bits.limitTo8Bits(value)
def Z(self, value): self.z = Bits.limitTo8Bits(value)
def test_bits_limitTo8Bits_correctly_limits_value_to_8_bits(self): value = 0b1101010010 self.assertEqual(0b1010010, Bits.limitTo8Bits(value))
def AFPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[A] = value >> 8 self.regsPri[F] = Bits.limitTo8Bits(value)
def test_bits_limitTo8Bits_correctly_limits_value_to_8_bits(self): value = 0b1101010010 self.assertEquals(0b1010010, Bits.limitTo8Bits(value))
def I(self, value): self.i = Bits.limitTo8Bits(value)
def HLPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[H] = value >> 8 self.regsPri[L] = Bits.limitTo8Bits(value)
def WZ(self, value): self.W = Bits.limitTo8Bits(value >> 8) self.Z = Bits.limitTo8Bits(value)
def DEPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[D] = value >> 8 self.regsPri[E] = Bits.limitTo8Bits(value)
def F(self, value): self.regs[F] = Bits.limitTo8Bits(value)
def BCPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[B] = value >> 8 self.regsPri[C] = Bits.limitTo8Bits(value)
def B(self, value): self.regs[B] = Bits.limitTo8Bits(value)
def AFPrim(self, value): value = Bits.limitTo16Bits(value) self.regsPri[A] = value >> 8 self.regsPri[F] = Bits.limitTo8Bits(value)
def C(self, value): self.regs[C] = Bits.limitTo8Bits(value)
def I(self, value): self.i = Bits.limitTo8Bits(value)
def D(self, value): self.regs[D] = Bits.limitTo8Bits(value)
def B(self, value): self.regs[B] = Bits.limitTo8Bits(value)
def E(self, value): self.regs[E] = Bits.limitTo8Bits(value)
def D(self, value): self.regs[D] = Bits.limitTo8Bits(value)
def H(self, value): self.regs[H] = Bits.limitTo8Bits(value)
def H(self, value): self.regs[H] = Bits.limitTo8Bits(value)
def L(self, value): self.regs[L] = Bits.limitTo8Bits(value)
def L(self, value): self.regs[L] = Bits.limitTo8Bits(value)
def R(self, value): self.r = Bits.limitTo8Bits(value)
def W(self, value): self.w = Bits.limitTo8Bits(value)
def __setitem__(self, addr, value): self.ram[addr] = Bits.limitTo8Bits(value)