112. ROR для нулевой страницы

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

Урок 112 из 356 · tests/chapter_01_cpu/test_112_ROR_zero_page.py

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

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

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

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

def ror_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    ror(cpu, addr)

OPCODE_TABLE = {
    ...
    0x66: ror_zero_page,
}

`zero_page уже существует в emulator/cpu/addressing_modes.py и выполняет выборку одного байта. ror уже существует в emulator/cpu/instructions.py; она выполняет чтение-модификацию-запись на шине, циклически сдвигает через старое значение Carry, устанавливает Carry по старому биту 0 и устанавливает Zero/Negative по результату. Таким образом, 66 10 изменяет cpu.bus[$0010]`, а не A, и PC в сумме увеличивается на два байта.

Заблуждение: выбранный байт `0x10 — это адрес, а не значение, передаваемое ror`. Вне области задачи: индексированный и абсолютный режимы ROR относятся к урокам 113-115; не дублируйте в этом обработчике кода операции логику адресации или циклического сдвига.

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

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