131. Ora absolute y

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

Урок 131 из 356 · tests/chapter_01_cpu/test_131_ORA_absolute_y.py

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

Абсолютная форма с индексацией по Y даёт ORA эквивалентный доступ через любой из индексных регистров и продолжает переиспользовать тот же независимый от режима адресации примитив.

На этом шаге, после уроков 125-130, `or_a и первые пять режимов ORA уже существуют. Добавьте ровно следующее в emulator/cpu/opcodes.py`:

def ora_absolute_y(cpu: CPU):
    addr = absolute_y(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x19: ora_absolute_y,
}

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

Заблуждение: Y индексирует декодированный адрес, а не какой-либо из байтов операнда, и обработчик должен читать из памяти, а не выполнять ORA над самим адресом. Вне рамок: ORA (indirect,X)/(indirect),Y (уроки 132-133) и вся работа с EOR/BIT (134-145).

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

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