113. ROR для нулевой страницы с индексом X

добавить код операции ``0x76`` для ROR zero-page,X.

Урок 113 из 356 · tests/chapter_01_cpu/test_113_ROR_zero_page_x.py

На этом шаге, поскольку `ror импортирована в уроке 112, добавьте только обработчик индексированного режима нулевой страницы и запись в таблице в emulator/cpu/opcodes.py`.

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

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

Предлагаемая реализация

def ror_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    ror(cpu, addr)

OPCODE_TABLE = {
    ...
    0x76: ror_zero_page_x,
}

`emulator/cpu/addressing_modes.py::zero_page_x выполняет выборку базового байта и вычисляет (base + cpu.x) & 0xFF. instructions.ror отвечает за чтение/запись памяти и изменения C/Z/N. Инвариантом является заворачивание нулевой страницы: база 0xFE плюс X 0x03 указывают на 0x0001, а не на 0x0101`; PC увеличивается на два байта, и A не изменяется.

Заблуждение: обычного целочисленного сложения недостаточно для индексации в нулевой странице. Вне области задачи: ROR в режимах absolute и absolute,X (уроки 114-115), а также любая новая реализация циклического сдвига или вспомогательная функция адресации.

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

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