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

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

Урок 128 из 356 · tests/chapter_01_cpu/test_128_ORA_zero_page_x.py

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

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

На этом шаге, следуя уроку 127, добавьте в `emulator/cpu/opcodes.py` только этот обработчик и запись в таблице:

def ora_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    value = cpu.bus.read(addr)
    or_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x15: ora_zero_page_x,
}

`emulator/cpu/addressing_modes.py::zero_page_x вычисляет (base + cpu.x) & 0xFF перед чтением с шины. Полученное значение передаётся в instructions.or_a; A и Z/N изменяются, а X, флаг переноса/переполнения и память — нет, и PC продвигается на два байта. Так, база 0xFE плюс X 0x03 дают чтение из $0001`.

Заблуждение: индексация в нулевой странице оборачивается к `$0001, а не к $0101`; X не изменяет загруженное значение. Вне рамок: абсолютные и косвенные режимы ORA (уроки 129-133).

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

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