173. Bcs relativo

conectar BCS con su opcode relativo.

Lección 173 de 356 · tests/chapter_01_cpu/test_173_BCS_relative.py

Requisito previo: el paso 172 importó `relative y conectó BCC. En este paso, añade estas piezas a emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import bcs

def bcs_relative(cpu: CPU):
    offset = relative(cpu)
    bcs(cpu, offset)

OPCODE_TABLE[0xB0] = bcs_relative

Integra la importación y el elemento de la tabla en el literal de importaciones y de tabla ya existentes.

Por qué existe este paso

El direccionamiento se mantiene en la capa de opcodes, mientras que el `instructions.bcs` del paso 165 se encarga de la decisión complementaria de Carry activado.

Invariantes: `0xB0 se asigna a bcs_relative(cpu)`; el operando con signo siempre se consume; con Carry activado se salta desde el PC posterior al operando, y con Carry desactivado ese PC no cambia. Las flags y la memoria quedan intactas. Idea errónea habitual: BCS significa Carry activado, no Carry desactivado, y el gestor no debe duplicar la conversión de signo.

Fuera de alcance: la conexión de opcodes de BEQ/BNE/BPL/BMI/BVC/BVS queda para los pasos 174-179; el direccionamiento JMP es el paso 180.

Ejecutar esta lección

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