128. Ora zero page x

añadir el opcode ORA zero-page,X ``0x15``.

Lección 128 de 356 · tests/chapter_01_cpu/test_128_ORA_zero_page_x.py

Por qué existe este paso

Esto habilita el acceso indexado compacto de ORA y verifica que la suma de X respeta la envoltura de página cero antes de combinar el byte seleccionado con A.

En este paso, siguiendo la lección 127, añade solo este manejador y la entrada de tabla a `emulator/cpu/opcodes.py`:

def ora_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x15: ora_zero_page_x,
}

`emulator/cpu/addressing_modes.py::zero_page_x calcula (base + cpu.x) & 0xFF antes de la lectura del bus. El valor resuelto alimenta a instructions.or_a; A y Z/N cambian, X, Carry/Overflow y la memoria no lo hacen, y el PC avanza dos bytes. Así, la base 0xFE más X 0x03 lee $0001`.

Concepto erróneo: la indexación en página cero envuelve a `$0001, no a $0101`; X no altera el valor cargado. Fuera de alcance: los modos absoluto e indirecto de ORA (lecciones 129-133).

Ejecutar esta lección

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