127. Ora zero page

añadir el opcode ORA zero-page ``0x05``.

Lección 127 de 356 · tests/chapter_01_cpu/test_127_ORA_zero_page.py

Por qué existe este paso

ORA debe distinguir un operando de dirección en página cero de un dato literal, leer el byte direccionado y luego aplicar el comportamiento de OR inclusivo ya definido.

En este paso, con `or_a importado en la lección 126, la implementación incremental completa en emulator/cpu/opcodes.py` es:

def ora_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x05: ora_zero_page,
}

`emulator/cpu/addressing_modes.py::zero_page obtiene la dirección de un solo byte, y luego el manejador lee su valor antes de llamar a instructions.or_a. A y Z/N cambian; Carry/Overflow y la memoria permanecen invariantes; 05 10 lee $0010` y avanza el PC dos bytes.

Concepto erróneo: pasa a `or_a el byte almacenado en $0010, no la dirección 0x10`, y no escribas el resultado de vuelta en memoria. Fuera de alcance: los modos de ORA desde zero-page,X hasta indirect,Y (lecciones 128-133).

Ejecutar esta lección

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