141. Eor indirect x
añadir el opcode EOR (indirect,X) ``0x41``.
Lección 141 de 356 · tests/chapter_01_cpu/test_141_EOR_indirect_x.py
Por qué existe este paso
El EOR indirecto pre-indexado permite el acceso a tablas de punteros a través de la página cero, preservando a la vez la separación entre la resolución de la dirección efectiva y el OR exclusivo.
En este paso, las lecciones 134-140 ya proporcionan `or_e, su importación de opcode y los modos EOR anteriores. Añade exactamente lo siguiente a emulator/cpu/opcodes.py`:
def eor_indirect_x(cpu: CPU):
addr = indirect_x(cpu)
value = cpu.bus.read(addr)
or_e(cpu, value)
OPCODE_TABLE = {
...
0x41: eor_indirect_x,
}`emulator/cpu/addressing_modes.py::indirect_x suma X al operando en la página cero, lee allí el puntero little-endian envuelto y devuelve su destino. El manejador lee ese destino y delega la semántica XOR en emulator/cpu/instructions.py::or_e`. A y Z/N pueden cambiar; Carry, Overflow, X, Y y la memoria permanecen invariantes; el opcode más el operando avanza el PC dos bytes.
Concepto erróneo: X indexa la ubicación del puntero en la página cero, no el destino final. Fuera de alcance: EOR (indirect),Y es la lección 142; BIT comienza en la lección 143.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_141_EOR_indirect_x.py -v