136. Eor zero page

добавить опкод EOR zero-page ``0x45``.

Урок 136 из 356 · tests/chapter_01_cpu/test_136_EOR_zero_page.py

Зачем нужен этот шаг

EOR нужна компактная форма для памяти, которая интерпретирует свой операнд как адрес в нулевой странице, читает это место и применяет общее поведение исключающего ИЛИ.

На этом шаге `or_e и EOR immediate уже существуют. Добавьте ровно следующее в 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 считывает однобайтовый адрес; обработчик выполняет отдельное чтение данных и передаёт это значение в instructions.or_e`. A и Z/N могут измениться; Carry/Overflow, память, X и Y остаются неизменными; опкод вместе с операндом сдвигает PC на два байта.

Заблуждение: `$nn` — это адрес в нулевой странице, а не буквальное значение для XOR. Вне рамок: индексированные и более широкие режимы EOR (137-142) и BIT (143-145).

Запустить этот урок

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