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_relativeIntegra 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