예제 #1
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 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
예제 #2
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 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
예제 #3
0
파일: opcodes.py 프로젝트: pawlos/Timex.Emu
    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)))
예제 #4
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def AF(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[A] = value >> 8
     self.regs[F] = Bits.limitTo8Bits(value)
예제 #5
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def A(self, value):
     self.regs[A] = Bits.limitTo8Bits(value)
예제 #6
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def DE(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[D] = value >> 8
     self.regs[E] = Bits.limitTo8Bits(value)
예제 #7
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def BC(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[B] = value >> 8
     self.regs[C] = Bits.limitTo8Bits(value)
예제 #8
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def HL(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[H] = value >> 8
     self.regs[L] = Bits.limitTo8Bits(value)
예제 #9
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def HL(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[H] = value >> 8
     self.regs[L] = Bits.limitTo8Bits(value)
예제 #10
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def A(self, value):
     self.regs[A] = Bits.limitTo8Bits(value)
예제 #11
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def E(self, value):
     self.regs[E] = Bits.limitTo8Bits(value)
예제 #12
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def BC(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[B] = value >> 8
     self.regs[C] = Bits.limitTo8Bits(value)
예제 #13
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def BCPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[B] = value >> 8
     self.regsPri[C] = Bits.limitTo8Bits(value)
예제 #14
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def DEPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[D] = value >> 8
     self.regsPri[E] = Bits.limitTo8Bits(value)
예제 #15
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def DE(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[D] = value >> 8
     self.regs[E] = Bits.limitTo8Bits(value)
예제 #16
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def HLPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[H] = value >> 8
     self.regsPri[L] = Bits.limitTo8Bits(value)
예제 #17
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def F(self, value):
     self.regs[F] = Bits.limitTo8Bits(value)
예제 #18
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def R(self, value):
     self.r = Bits.limitTo8Bits(value)
예제 #19
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def C(self, value):
     self.regs[C] = Bits.limitTo8Bits(value)
예제 #20
0
파일: ram.py 프로젝트: pawlos/Timex.Emu
 def __setitem__(self, addr, value):
     self.ram[addr] = Bits.limitTo8Bits(value)
예제 #21
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def AF(self, value):
     value = Bits.limitTo16Bits(value)
     self.regs[A] = value >> 8
     self.regs[F] = Bits.limitTo8Bits(value)
예제 #22
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def Z(self, value):
     self.z = Bits.limitTo8Bits(value)
예제 #23
0
 def test_bits_limitTo8Bits_correctly_limits_value_to_8_bits(self):
     value = 0b1101010010
     self.assertEqual(0b1010010, Bits.limitTo8Bits(value))
예제 #24
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def AFPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[A] = value >> 8
     self.regsPri[F] = Bits.limitTo8Bits(value)
예제 #25
0
 def test_bits_limitTo8Bits_correctly_limits_value_to_8_bits(self):
     value = 0b1101010010
     self.assertEquals(0b1010010, Bits.limitTo8Bits(value))
예제 #26
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def I(self, value):
     self.i = Bits.limitTo8Bits(value)
예제 #27
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def HLPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[H] = value >> 8
     self.regsPri[L] = Bits.limitTo8Bits(value)
예제 #28
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def WZ(self, value):
     self.W = Bits.limitTo8Bits(value >> 8)
     self.Z = Bits.limitTo8Bits(value)
예제 #29
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def DEPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[D] = value >> 8
     self.regsPri[E] = Bits.limitTo8Bits(value)
예제 #30
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def F(self, value):
     self.regs[F] = Bits.limitTo8Bits(value)
예제 #31
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def BCPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[B] = value >> 8
     self.regsPri[C] = Bits.limitTo8Bits(value)
예제 #32
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def B(self, value):
     self.regs[B] = Bits.limitTo8Bits(value)
예제 #33
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def AFPrim(self, value):
     value = Bits.limitTo16Bits(value)
     self.regsPri[A] = value >> 8
     self.regsPri[F] = Bits.limitTo8Bits(value)
예제 #34
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def C(self, value):
     self.regs[C] = Bits.limitTo8Bits(value)
예제 #35
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def I(self, value):
     self.i = Bits.limitTo8Bits(value)
예제 #36
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def D(self, value):
     self.regs[D] = Bits.limitTo8Bits(value)
예제 #37
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def B(self, value):
     self.regs[B] = Bits.limitTo8Bits(value)
예제 #38
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def E(self, value):
     self.regs[E] = Bits.limitTo8Bits(value)
예제 #39
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def D(self, value):
     self.regs[D] = Bits.limitTo8Bits(value)
예제 #40
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def H(self, value):
     self.regs[H] = Bits.limitTo8Bits(value)
예제 #41
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def H(self, value):
     self.regs[H] = Bits.limitTo8Bits(value)
예제 #42
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def L(self, value):
     self.regs[L] = Bits.limitTo8Bits(value)
예제 #43
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def L(self, value):
     self.regs[L] = Bits.limitTo8Bits(value)
예제 #44
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def R(self, value):
     self.r = Bits.limitTo8Bits(value)
예제 #45
0
파일: cpu.py 프로젝트: pawlos/Timex.Emu
 def W(self, value):
     self.w = Bits.limitTo8Bits(value)
예제 #46
0
파일: ram.py 프로젝트: pawlos/Timex.Emu
 def __setitem__(self, addr, value):
     self.ram[addr] = Bits.limitTo8Bits(value)