137. Eor zero page x

añadir el opcode EOR zero-page,X ``0x55``.

Lección 137 de 356 · tests/chapter_01_cpu/test_137_EOR_zero_page_x.py

Por qué existe este paso

Esto añade el EOR indexado en página cero y verifica que el índice de X se ajusta de forma circular dentro de la página antes de que el valor direccionado se combine con el acumulador.

En este paso, siguiendo la lección 136, añade exactamente lo siguiente a `emulator/cpu/opcodes.py`:

def eor_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x55: eor_zero_page_x,
}

`emulator/cpu/addressing_modes.py::zero_page_x obtiene la base y calcula (base + cpu.x) & 0xFF` antes de que el manejador lea los datos. Así, la indexación permanece dentro de la página cero. A y Z/N pueden cambiar; Carry/Overflow, la memoria, X e Y son invariantes; el opcode más el operando avanza el PC dos bytes.

Concepto erróneo: un desbordamiento como `$FE + $03 se ajusta a $01, no a $0101`. Fuera de alcance: los modos absoluto e indirecto de EOR (138-142) y BIT (143-145).

Ejecutar esta lección

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