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