Beispiel #1
0
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
Beispiel #2
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
Beispiel #3
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
Beispiel #4
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