예제 #1
0
def test_TAY():
     cpu = CPU()
     memory = Memory()
     cpu.y = 1
     cpu.a = 2
     TAY = OpCodes.all[168]
     TAY.exec(cpu, memory)

     assert cpu.y == 2
     assert cpu.zero == False
     assert cpu.negative == False

     cpu.a = 0
     cpu.y = 1
     cpu.inc_cycle_by(-cpu.cycle)
     TAY.exec(cpu, memory)

     assert cpu.cycle == (TAY.cycles - 1)
     assert cpu.y == 0
     assert cpu.zero == True
     assert cpu.negative == False

     cpu.a = 0b10000001
     cpu.y = 1
     TAY.exec(cpu, memory)

     assert cpu.y == 0b10000001
     assert cpu.zero == False
     print(cpu.negative)
     assert cpu.negative == True
예제 #2
0
def test_TYA():
     cpu = CPU()
     memory = Memory()
     cpu.a = 1
     cpu.y = 2
     TYA = OpCodes.all[152]
     TYA.exec(cpu, memory)

     assert cpu.a == 2
     assert cpu.zero == False
     assert cpu.negative == False

     cpu.y = 0
     cpu.a = 1
     cpu.inc_cycle_by(-cpu.cycle)
     TYA.exec(cpu, memory)

     assert cpu.cycle == (TYA.cycles - 1)
     assert cpu.a == 0
     assert cpu.zero == True
     assert cpu.negative == False

     cpu.y = 0b10000001
     cpu.a = 1
     TYA.exec(cpu, memory)

     assert cpu.a == 0b10000001
     assert cpu.zero == False
     print(cpu.negative)
     assert cpu.negative == True
예제 #3
0
def test_read_Accumulator():
    address_mode = Accumulator
    cpu = CPU()
    memory = Memory()

    cpu.a = 0x00
    cpu.inc_cycle_by(-cpu.cycle)
    address = address_mode.fetch_address(cpu, memory)
    value = address_mode.read_from(cpu, memory, address)

    assert address is None
    assert value == 0x00

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.inc_pc_by(-cpu.pc)
    cpu.inc_pc_by(MemoryPositions.PRG_ROM_START.start)
    cpu.a = 0x10
    address = address_mode.fetch_address(cpu, memory)
    value = address_mode.read_from(cpu, memory, address)

    assert address is None
    assert value == 0x10

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.inc_pc_by(-cpu.pc)
    cpu.inc_pc_by(MemoryPositions.PRG_ROM_START.start)
    cpu.a = 0xFF
    address = address_mode.fetch_address(cpu, memory)
    value = address_mode.read_from(cpu, memory, address)

    assert address is None
    assert value == 0xFF
예제 #4
0
def test_read_Accumulator():
    address_mode = Accumulator
    cpu = CPU()
    memory = Memory()

    cpu.inc_cycle_by(-cpu.cycle)
    address = address_mode.fetch_address(cpu, memory)
    address_mode.write_to(cpu, memory, address, 5)

    assert address is None
    assert cpu.a == 5

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.inc_pc_by(-cpu.pc)
    cpu.inc_pc_by(MemoryPositions.PRG_ROM_START.start)
    cpu.a = 0x10
    address = address_mode.fetch_address(cpu, memory)
    address_mode.write_to(cpu, memory, address, 105)

    assert address is None
    assert cpu.a == 105

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.inc_pc_by(-cpu.pc)
    cpu.inc_pc_by(MemoryPositions.PRG_ROM_START.start)
    cpu.a = 0xFF
    address = address_mode.fetch_address(cpu, memory)
    address_mode.write_to(cpu, memory, address, 255)

    assert address is None
    assert cpu.a == 255
예제 #5
0
def test_ROR_accumulator():
    instruction = OpCodes.all[0x6A]
    cpu = CPU()
    memory = Memory()
    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b00000000
    cpu.carry = False
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b00000000
    assert cpu.zero == True
    assert cpu.carry == False
    assert cpu.negative == False

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b00000001
    cpu.carry = False
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b00000000
    assert cpu.zero == True
    assert cpu.carry == True
    assert cpu.negative == False

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b01000000
    cpu.carry = False
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b00100000
    assert cpu.zero == False
    assert cpu.carry == False
    assert cpu.negative == False

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b10000000
    cpu.carry = False
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b01000000
    assert cpu.zero == False
    assert cpu.carry == False
    assert cpu.negative == False

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b00000000
    cpu.carry = True
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b10000000
    assert cpu.zero == False
    assert cpu.carry == False
    assert cpu.negative == True

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b00000010
    cpu.carry = True
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b10000001
    assert cpu.zero == False
    assert cpu.carry == False
    assert cpu.negative == True

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b01000000
    cpu.carry = True
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b10100000
    assert cpu.zero == False
    assert cpu.carry == False
    assert cpu.negative == True

    cpu.inc_cycle_by(-cpu.cycle)
    cpu.a = 0b00000001
    cpu.carry = True
    instruction.exec(cpu, memory)

    assert cpu.cycle == (instruction.cycles - 1)
    assert cpu.a == 0b10000000
    assert cpu.zero == False
    assert cpu.carry == True
    assert cpu.negative == True