111. ROR для аккумулятора

предоставить уже реализованный ROR A как код операции ``0x6A``.

Урок 111 из 356 · tests/chapter_01_cpu/test_111_ROR_accumulator.py

На этом шаге используйте `ror и ror_a из уроков 109-110 и добавьте только интеграцию кода операции для аккумулятора в emulator/cpu/opcodes.py`.

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

ROR A требует записи в таблице кодов операций, чтобы программы могли обращаться к примитиву для аккумулятора при обычном выполнении CPU без ошибочной выборки операнда.

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

from emulator.cpu.instructions import (..., ror_a)

OPCODE_TABLE = {
    ...
    0x6A: ror_a,
}

Прямая запись в таблице является полным примером реализации: `CPU.step уже выполнил выборку кода операции, а ror_a(cpu)` не нуждается в декодере операнда. Она циклически сдвигает A вправо через старое значение Carry, переносит старый бит 0 из A в Carry, обновляет Zero/Negative по 8-битному результату и оставляет память нетронутой. Поэтому однобайтовая инструкция увеличивает PC ровно на единицу.

Заблуждение: режим аккумулятора — это не обертка над режимом адресации; добавление обработчика `ror_accumulator или выборка операнда потребовала бы дополнительного байта. Вне области данного шага: обработчики/коды операций для памяти 0x66, 0x76, 0x6E и 0x7E` относятся к урокам 112-115; AND начинается с урока 116.

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

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