127. ORA, адресация нулевой страницы

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

Урок 127 из 356 · tests/chapter_01_cpu/test_127_ORA_zero_page.py

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

ORA должна отличать операнд-адрес в нулевой странице от литеральных данных, считывать байт по этому адресу и затем применять уже определённое поведение включающего ИЛИ.

На этом шаге, при импортированном в уроке 126 `or_a, полная дополнительная реализация в emulator/cpu/opcodes.py` выглядит так:

def ora_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x05: ora_zero_page,
}

`emulator/cpu/addressing_modes.py::zero_page считывает однобайтовый адрес, после чего обработчик читает его значение перед вызовом instructions.or_a. A и Z/N изменяются; флаг переноса/переполнения и память остаются неизменными; 05 10 читает $0010` и продвигает PC на два байта.

Заблуждение: в `or_a нужно передавать байт, хранящийся по адресу $0010, а не адрес 0x10`, и результат не записывается обратно в память. Вне рамок: режимы ORA от zero-page,X до indirect,Y (уроки 128-133).

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

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