137. Eor zero page x

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

Урок 137 из 356 · tests/chapter_01_cpu/test_137_EOR_zero_page_x.py

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

Этот урок добавляет индексированную EOR для нулевой страницы и проверяет, что индексация по X переносится внутри страницы до того, как адресуемое значение объединяется с аккумулятором.

На этом шаге, следуя уроку 136, добавьте ровно следующее в `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 считывает базовый адрес и вычисляет (base + cpu.x) & 0xFF` до того, как обработчик читает данные. Таким образом индексация остаётся внутри нулевой страницы. A и Z/N могут измениться; Carry/Overflow, память, X и Y неизменны; опкод вместе с операндом сдвигает PC на два байта.

Заблуждение: переполнение вида `$FE + $03 переносится в $01, а не в $0101`. Вне рамок: абсолютные и косвенные режимы EOR (138-142) и BIT (143-145).

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

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