172. Bcc relativo

conectar BCC con su opcode relativo.

Lección 172 de 356 · tests/chapter_01_cpu/test_172_BCC_relative.py

En este paso, añade estas piezas a `emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import bcc
from emulator.cpu.addressing_modes import relative

def bcc_relative(cpu: CPU):
    offset = relative(cpu)
    bcc(cpu, offset)

OPCODE_TABLE[0x90] = bcc_relative

Las importaciones pueden integrarse en el grupo de importaciones ya existente del archivo, y la entrada de la tabla va en su literal.

Por qué existe este paso

`CPU.step ya ha consumido el opcode, relative consume y aplica el signo al operando de un byte, y el bcc` del paso 164 lo aplica solo cuando Carry está desactivado.

Invariantes: el opcode `0x90 se resuelve al gestor de un argumento; todos los caminos consumen el operando, de modo que un salto no tomado termina en 0x8002 y un salto de +5 apunta a 0x8007`. El gestor en sí no cambia ninguna flag ni memoria. Idea errónea habitual: el desplazamiento es relativo a PC después del operando, no a la dirección del opcode, y debe obtenerse incluso cuando Carry impide el salto.

Fuera de alcance: los gestores y entradas de tabla de BCS, BEQ, BNE, BPL, BMI, BVC y BVS son los pasos 173-179. El direccionamiento JMP indirecto empieza en el paso 180.

Ejecutar esta lección

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