104. Rol accumulator

раскрыть ROL A как опкод ``0x2A``.

Урок 104 из 356 · tests/chapter_01_cpu/test_104_ROL_accumulator.py

На этом шаге, после того как уроки 102-103 определили `rol и rol_a`, добавьте импорты ROL, необходимые опкодам, и запись диспетчеризации для аккумулятора. Последующие режимы памяти и ROR остаются в своих пронумерованных шагах.

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

Список импортов `emulator/cpu/opcodes.py` пополняется::

rol, rol_a

`emulator/cpu/opcodes.py::OPCODE_TABLE` пополняется::

0x2A: rol_a,

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

Режиму аккумулятора не нужен адаптер, потому что `rol_a(cpu)` уже соответствует сигнатуре обработчика опкода.

Инварианты: выборка `0x2A продвигает PC на один шаг перед диспетчеризацией; rol_a` не потребляет операнд, поэтому итоговый PC равен start+1, вращается только A, а его флаги C/Z/N сохраняют семантику урока 103.

Заблуждение: не создавайте обёртку режима адресации и не вызывайте `rol с A. Режим аккумулятора занимает один байт и напрямую отображается на rol_a`.

Вне рамок: адаптеры опкодов памяти `0x26, 0x36, 0x2E и 0x3E` — уроки 105-108; вся диспетчеризация ROR — с урока 111 и далее.

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

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