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