133. Ora indirect y

añadir el opcode ORA (indirect),Y ``0x11``.

Lección 133 de 356 · tests/chapter_01_cpu/test_133_ORA_indirect_y.py

Por qué existe este paso

Esto completa las formas de direccionamiento de ORA resolviendo un puntero en la página cero y sumando después Y, sin duplicar la lógica del resultado ni de las flags de la operación.

En este paso, completa ORA tras las lecciones 125-132 añadiendo lo siguiente a `emulator/cpu/opcodes.py`:

def ora_indirect_y(cpu: CPU):
    addr = indirect_y(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x11: ora_indirect_y,
}

`emulator/cpu/addressing_modes.py::indirect_y obtiene un puntero en la página cero, lee su destino en little-endian con una búsqueda circular del byte alto, y solo entonces suma Y. El manejador lee ese destino indexado y llama a instructions.or_a`. A y Z/N pueden cambiar; Carry/Overflow, la memoria, X e Y son invariantes; el opcode más el operando avanza el PC dos bytes.

Concepto erróneo: a diferencia de (indirect,X), Y no selecciona la ubicación del puntero; indexa el destino ya resuelto. Fuera de alcance: EOR y BIT (lecciones 134-145).

Ejecutar esta lección

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