168. Instrucción bpl

implementar el comportamiento de Branch if Plus.

Lección 168 de 356 · tests/chapter_01_cpu/test_168_instruction_bpl.py

Por qué existe este paso

En la terminología del 6502, "plus" significa que el flag Negative existente está despejado, por lo que BPL selecciona según ese flag en lugar de inspeccionar el desplazamiento o PC.

En este paso, después de BNE, añade exactamente

`emulator/cpu/instructions.py::bpl`::

def bpl(cpu: CPU, offset: int):
    if not cpu.flags.get_negative_flag():
        cpu.pc = (cpu.pc + offset) & 0xFFFF

La función aplica el desplazamiento con signo ya decodificado al PC posterior al operando y enmascara el resultado al espacio de direcciones de 16 bits.

Invariantes: con Negative despejado se toma el salto; con Negative activado, PC permanece sin cambios. Ningún flag, otro registro o la memoria cambian. Concepto erróneo: BPL no comprueba si PC u `offset` es positivo ni recalcula Negative.

Fuera de alcance: BMI/BVC/BVS son las lecciones 169-171. Las importaciones de opcodes, los manejadores relativos y las entradas de tabla son las lecciones 172-179.

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_168_instruction_bpl.py -v