140. Eor absolute y

добавить опкод EOR absolute,Y ``0x59``.

Урок 140 из 356 · tests/chapter_01_cpu/test_140_EOR_absolute_y.py

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

Опкод с индексацией по Y для абсолютной адресации предоставляет соответствующую форму доступа к данным для EOR, не создавая вторую реализацию поведения аккумулятора или флагов.

На этом шаге, следуя уроку 139, добавьте ровно следующее в `emulator/cpu/opcodes.py`:

def eor_absolute_y(cpu: CPU):
    addr = absolute_y(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x59: eor_absolute_y,
}

`emulator/cpu/addressing_modes.py::absolute_y считывает базовое слово в порядке little-endian, а затем прибавляет Y; этот вспомогательный метод не применяет дополнительную маску & 0xFFFF. Обработчик читает по индексированному адресу и вызывает instructions.or_e`. A и Z/N могут измениться; Carry/Overflow, память, X и Y остаются неизменными; PC сдвигается на три байта.

Заблуждение: Y индексирует декодированный адрес, а не какой-либо из закодированных байтов. Вне рамок: EOR (indirect,X)/(indirect),Y (141-142) и BIT (143-145).

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

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