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