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