165. Instrucción bcs

implementar el comportamiento de Branch if Carry Set.

Lección 165 de 356 · tests/chapter_01_cpu/test_165_instruction_bcs.py

Por qué existe este paso

La capa de direccionamiento ya ha consumido y aplicado el signo al operando, por lo que BCS solo selecciona según Carry y aplica el desplazamiento al PC de la siguiente instrucción.

En este paso, después de BCC en la lección 164, añade exactamente

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

def bcs(cpu: CPU, offset: int):
    if cpu.flags.get_carry_flag():
        cpu.pc = (cpu.pc + offset) & 0xFFFF

El enmascarado hace que tanto el desbordamiento como el subdesbordamiento se ajusten a 16 bits.

Invariantes: con Carry activado se toma el salto; con Carry despejado, PC permanece sin cambios. Ningún flag de estado, otro registro o la memoria cambian. Concepto erróneo: BCS no activa Carry y no salta cuando Carry está despejado; simplemente lee ese flag.

Fuera de alcance: las siguientes funciones de instrucción de salto son las lecciones 166-171; todas las importaciones de opcodes de salto, manejadores y entradas de tabla son las lecciones 172-179.

Ejecutar esta lección

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