114. ROR для абсолютной адресации

добавить код операции ROR для абсолютной адресации ``0x6E``.

Урок 114 из 356 · tests/chapter_01_cpu/test_114_ROR_absolute.py

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

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

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

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

def ror_absolute(cpu: CPU):
    addr = absolute(cpu)
    ror(cpu, addr)

OPCODE_TABLE = {
    ...
    0x6E: ror_absolute,
}

`emulator/cpu/addressing_modes.py::absolute вызывает CPU.fetch_word и поэтому декодирует младший байт перед старшим. 6E 00 02 циклически сдвигает байт по адресу $0200 через Carry посредством instructions.ror`. Память концептуально один раз проходит чтение/модификацию/запись, A не изменяется, C/Z/N следуют результату циклического сдвига, а код операции и двухбайтовый операнд увеличивают PC на три.

Заблуждение: `00 02 — это не адрес $0002 и не сами данные для циклического сдвига. Вне области задачи: добавление X (урок 115), изменение absolute или повторная реализация ror` в обработчике.

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

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