Browse Source

Add more pretty-printing

master
Forest Belton 3 years ago
parent
commit
aed0c16681
1 changed files with 36 additions and 1 deletions
  1. +36
    -1
      gbso/insn.py

+ 36
- 1
gbso/insn.py View File

@ -348,6 +348,9 @@ class AND_A_HL(Insn):
cpu.set_reg8(R8.A, a) cpu.set_reg8(R8.A, a)
cpu.carry = 0 cpu.carry = 0
def pretty(self) -> str:
return "AND A, (HL)"
@dataclass @dataclass
class CP_A_R(Insn): class CP_A_R(Insn):
@ -356,6 +359,9 @@ class CP_A_R(Insn):
def exec(self, cpu: CPU) -> None: def exec(self, cpu: CPU) -> None:
cpu.carry = 1 if cpu.get_reg8(R8.A) < cpu.get_reg8(self.r) else 0 cpu.carry = 1 if cpu.get_reg8(R8.A) < cpu.get_reg8(self.r) else 0
def pretty(self) -> str:
return f"CP A, {self.r.value}"
@dataclass @dataclass
class CP_A_N(Insn): class CP_A_N(Insn):
@ -364,12 +370,18 @@ class CP_A_N(Insn):
def exec(self, cpu: CPU) -> None: def exec(self, cpu: CPU) -> None:
cpu.carry = 1 if cpu.get_reg8(R8.A) < self.n else 0 cpu.carry = 1 if cpu.get_reg8(R8.A) < self.n else 0
def pretty(self) -> str:
return f"CP A, {hex(self.n)}"
@dataclass @dataclass
class CP_A_HL(Insn): class CP_A_HL(Insn):
def exec(self, cpu: CPU) -> None: def exec(self, cpu: CPU) -> None:
cpu.carry = 1 if cpu.get_reg8(R8.A) < cpu.get_mem8(cpu.get_reg16(R16.HL)) else 0 cpu.carry = 1 if cpu.get_reg8(R8.A) < cpu.get_mem8(cpu.get_reg16(R16.HL)) else 0
def pretty(self) -> str:
return "CP A, (HL)"
@dataclass @dataclass
class INC_R(Insn): class INC_R(Insn):
@ -378,6 +390,9 @@ class INC_R(Insn):
def exec(self, cpu: CPU) -> None: def exec(self, cpu: CPU) -> None:
cpu.set_reg8(self.r, cpu.get_reg8(self.r) + 1) cpu.set_reg8(self.r, cpu.get_reg8(self.r) + 1)
def pretty(self) -> str:
return f"INC {self.r.value}"
@dataclass @dataclass
class INC_HL(Insn): class INC_HL(Insn):
@ -387,6 +402,9 @@ class INC_HL(Insn):
hl = cpu.get_reg16(R16.HL) hl = cpu.get_reg16(R16.HL)
cpu.set_mem8(hl, cpu.get_mem8(hl) + 1) cpu.set_mem8(hl, cpu.get_mem8(hl) + 1)
def pretty(self) -> str:
return "INC (HL)"
@dataclass @dataclass
class DEC_R(Insn): class DEC_R(Insn):
@ -395,6 +413,9 @@ class DEC_R(Insn):
def exec(self, cpu: CPU) -> None: def exec(self, cpu: CPU) -> None:
cpu.set_reg8(self.r, cpu.get_reg8(self.r) - 1) cpu.set_reg8(self.r, cpu.get_reg8(self.r) - 1)
def pretty(self) -> str:
return f"DEC {self.r.value}"
@dataclass @dataclass
class DEC_HL(Insn): class DEC_HL(Insn):
@ -404,6 +425,9 @@ class DEC_HL(Insn):
hl = cpu.get_reg16(R16.HL) hl = cpu.get_reg16(R16.HL)
cpu.set_mem8(hl, cpu.get_mem8(hl) - 1) cpu.set_mem8(hl, cpu.get_mem8(hl) - 1)
def pretty(self) -> str:
return "DEC (HL)"
@dataclass @dataclass
class CPL(Insn): class CPL(Insn):
@ -420,6 +444,9 @@ class ADD_HL_RR(Insn):
cpu.carry = 1 if hl > 0xFFFF else 0 cpu.carry = 1 if hl > 0xFFFF else 0
cpu.set_reg16(R16.HL, hl) cpu.set_reg16(R16.HL, hl)
def pretty(self) -> str:
return f"ADD HL, {self.rr.value}"
@dataclass @dataclass
class INC_RR(Insn): class INC_RR(Insn):
@ -452,6 +479,9 @@ class ADD_SP_DD(Insn):
cpu.carry = 1 if sp > 0xFFFF or sp < 0 else 0 cpu.carry = 1 if sp > 0xFFFF or sp < 0 else 0
cpu.set_reg16(R16.SP, sp) cpu.set_reg16(R16.SP, sp)
def pretty(self) -> str:
return f"ADD SP, {self.dd}"
@dataclass @dataclass
class LD_HL_SP_DD(Insn): class LD_HL_SP_DD(Insn):
@ -462,8 +492,10 @@ class LD_HL_SP_DD(Insn):
cpu.carry = 1 if sp > 0xFFFF or sp < 0 else 0 cpu.carry = 1 if sp > 0xFFFF or sp < 0 else 0
cpu.set_reg16(R16.HL, sp) cpu.set_reg16(R16.HL, sp)
def pretty(self) -> str:
return f"LD HL, SP + {self.dd}"
# TODO: Rotate and shift instructions
@dataclass @dataclass
class RLCA(Insn): class RLCA(Insn):
def exec(self, cpu: CPU) -> None: def exec(self, cpu: CPU) -> None:
@ -510,6 +542,9 @@ class RRA(Insn):
return "RRA" return "RRA"
# TODO: Remaining rotate and shift instructions
@dataclass @dataclass
class SET_N_R(Insn): class SET_N_R(Insn):
n: int n: int

Loading…
Cancel
Save