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