def ABX(cpu: CPU6502): lo, hi = cpu.cpu_read_2(cpu.state.pc) cpu.state.pc += 2 cpu.state.addr_abs = (hi << 8) | lo cpu.state.addr_abs += cpu.state.x if (cpu.state.addr_abs & 0xff00) != (hi << 8): return 1 else: return 0
def ABY(cpu: CPU6502): lo, hi = cpu.cpu_read_2(cpu.state.pc) cpu.state.pc += 2 addr = ((hi << 8) | lo) + cpu.state.y cpu.state.addr_abs = addr & 0xFFFF if (addr & 0xff00) != (hi << 8): return 1 else: return 0
def IND(cpu: CPU6502): ptr_lo, ptr_hi = cpu.cpu_read_2(cpu.state.pc) cpu.state.pc += 2 ptr = (ptr_hi << 8) | ptr_lo if ptr_lo == 0x00ff: # Simulate page boundary hardware bug cpu.state.addr_abs = ( cpu.cpu_read(ptr & 0xff00) << 8) | cpu.cpu_read(ptr + 0) else: cpu.state.addr_abs = (cpu.cpu_read(ptr + 1) << 8) | cpu.cpu_read(ptr + 0) return 0
def ABS(cpu: CPU6502): lo, hi = cpu.cpu_read_2(cpu.state.pc) cpu.state.pc += 2 cpu.state.addr_abs = (hi << 8) | lo return 0