106. Rol zero page x

подключить ROL Zero Page,X (опкод ``0x36``).

Урок 106 из 356 · tests/chapter_01_cpu/test_106_ROL_zero_page_x.py

На этом шаге расширьте урок 105, добавив только индексированный адаптер нулевой страницы и запись диспетчеризации.

Полный пример реализации в производственных местах

`emulator/cpu/opcodes.py::rol_zero_page_x`::

def rol_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    rol(cpu, addr)

`emulator/cpu/opcodes.py::OPCODE_TABLE`::

0x36: rol_zero_page_x,

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

Повторное использование установленного вспомогательного средства адресации предотвращает дублирование политики переполнения в примитиве инструкции.

Инварианты: потребляется один байт операнда; эффективный адрес равен `(operand + cpu.x) & 0xFF; PC заканчивается на start+2; rol изменяет только этот байт с поведением C/Z/N из урока 102. Таким образом база 0xFE плюс X 0x03 указывает на $0001`.

Заблуждение: индексация нулевой страницы не переходит в `$0101` и не является 16-битной абсолютной индексацией; обязательно переполнение до восьми бит.

Вне рамок: абсолютные режимы — уроки 107-108, ROR начинается с урока 109, а последовательность чтения/модификации/записи с точностью до такта для индексированных режимов — более поздняя работа.

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

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