129. Ora absolute
añadir el opcode ORA absolute ``0x0D``.
Lección 129 de 356 · tests/chapter_01_cpu/test_129_ORA_absolute.py
Por qué existe este paso
ORA absolute extiende la operación más allá de la página cero decodificando una dirección completa en little-endian y leyendo su valor antes de actualizar A y Z/N.
En este paso, `or_a y los manejadores inmediato/zero-page ya existen, así que añade exactamente lo siguiente a emulator/cpu/opcodes.py`:
def ora_absolute(cpu: CPU):
addr = absolute(cpu)
value = cpu.bus.read(addr)
or_a(cpu, value)
OPCODE_TABLE = {
...
0x0D: ora_absolute,
}`emulator/cpu/addressing_modes.py::absolute obtiene una palabra en little-endian mediante CPU.fetch_word. Por tanto, 0D 00 02 lee $0200 y envía ese valor a instructions.or_a`. A y Z/N cambian; Carry/Overflow y la memoria son invariantes; el opcode más la palabra avanza el PC tres bytes.
Concepto erróneo: la palabra del operando es una dirección, no un valor inmediato, y su byte bajo va primero. Fuera de alcance: los modos absoluto indexado e indirecto de ORA (lecciones 130-133).
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_129_ORA_absolute.py -v