136. Eor zero page

añadir el opcode EOR zero-page ``0x45``.

Lección 136 de 356 · tests/chapter_01_cpu/test_136_EOR_zero_page.py

Por qué existe este paso

EOR necesita una forma de memoria compacta que interprete su operando como una dirección de página cero, lea esa ubicación y aplique el comportamiento común de OR exclusivo.

En este paso, `or_e y EOR immediate ya existen. Añade exactamente lo siguiente a emulator/cpu/opcodes.py`:

def eor_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x45: eor_zero_page,
}

`emulator/cpu/addressing_modes.py::zero_page obtiene la dirección de un byte; el manejador realiza la lectura de datos por separado y pasa ese valor a instructions.or_e`. A y Z/N pueden cambiar; Carry/Overflow, la memoria, X e Y permanecen invariantes; el opcode más el operando avanza el PC dos bytes.

Concepto erróneo: `$nn` es una dirección en la página cero, no el valor literal del XOR. Fuera de alcance: los modos de EOR indexados y más amplios (137-142) y BIT (143-145).

Ejecutar esta lección

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