131. Ora absolute y

añadir el opcode ORA absolute,Y ``0x19``.

Lección 131 de 356 · tests/chapter_01_cpu/test_131_ORA_absolute_y.py

Por qué existe este paso

La forma absoluta indexada por Y proporciona a ORA un acceso equivalente a través de cualquiera de los dos registros de índice y sigue reutilizando la misma primitiva independiente del modo de direccionamiento.

En este paso, tras las lecciones 125-130, `or_a y los cinco primeros modos de ORA ya existen. Añade exactamente lo siguiente a emulator/cpu/opcodes.py`:

def ora_absolute_y(cpu: CPU):
    addr = absolute_y(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x19: ora_absolute_y,
}

`emulator/cpu/addressing_modes.py::absolute_y obtiene la palabra base en little-endian y le suma Y; el manejador lee entonces esa dirección efectiva y pasa el valor a emulator/cpu/instructions.py::or_a`. A y Z/N pueden cambiar; Carry/Overflow, la memoria, X e Y son invariantes, y el opcode más la palabra avanza el PC tres bytes.

Concepto erróneo: Y indexa la dirección decodificada, no ninguno de los bytes de operando, y el manejador debe leer la memoria en lugar de aplicar OR a la propia dirección. Fuera de alcance: ORA (indirect,X)/(indirect),Y (lecciones 132-133) y todo el trabajo de EOR/BIT (134-145).

Ejecutar esta lección

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