|
@ -0,0 +1,146 @@ |
|
|
|
|
|
import pytest |
|
|
|
|
|
|
|
|
|
|
|
from tests.insn.helpers import * |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_rlca(): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(R8.A, 0x80) |
|
|
|
|
|
|
|
|
|
|
|
RLCA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x01 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 4 |
|
|
|
|
|
|
|
|
|
|
|
RLCA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x02 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_rla(): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(R8.A, 0x80) |
|
|
|
|
|
|
|
|
|
|
|
RLA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x00 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 4 |
|
|
|
|
|
|
|
|
|
|
|
RLA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x01 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_rrca(): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(R8.A, 0x01) |
|
|
|
|
|
|
|
|
|
|
|
RRCA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x80 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 4 |
|
|
|
|
|
|
|
|
|
|
|
RRCA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x40 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_rra(): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(R8.A, 0x01) |
|
|
|
|
|
|
|
|
|
|
|
RRA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x00 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 4 |
|
|
|
|
|
|
|
|
|
|
|
RRA().exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(R8.A) == 0x80 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("r", R8) |
|
|
|
|
|
def test_rlc_r(r): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(r, 0x80) |
|
|
|
|
|
|
|
|
|
|
|
RLC_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x01 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
RLC_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x02 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("r", R8) |
|
|
|
|
|
def test_rl_r(r): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(r, 0x80) |
|
|
|
|
|
|
|
|
|
|
|
RL_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x00 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
RL_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x01 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("r", R8) |
|
|
|
|
|
def test_rrc_r(r): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(r, 0x01) |
|
|
|
|
|
|
|
|
|
|
|
RRC_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x80 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
RRC_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x40 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("r", R8) |
|
|
|
|
|
def test_rr_r(r): |
|
|
|
|
|
cpu = CPU() |
|
|
|
|
|
cpu.set_reg8(r, 0x01) |
|
|
|
|
|
|
|
|
|
|
|
RR_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x00 |
|
|
|
|
|
assert cpu.carry == 1 |
|
|
|
|
|
assert cpu.cycles == 8 |
|
|
|
|
|
|
|
|
|
|
|
RR_R(r).exec(cpu) |
|
|
|
|
|
|
|
|
|
|
|
assert cpu.get_reg8(r) == 0x80 |
|
|
|
|
|
assert cpu.carry == 0 |
|
|
|
|
|
assert cpu.cycles == 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: Test RLC_HL, RL_HL, RRC_HL, RR_HL |