077. Dec zero page x

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

Урок 77 из 356 · tests/chapter_01_cpu/test_077_DEC_zero_page_x.py

На этом шаге, при импортированном dec из урока 076, добавьте только emulator/cpu/opcodes.py:dec_zero_page_x и OPCODE_TABLE[0xD6].

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

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

Рекомендуемая реализация в emulator/cpu/opcodes.py:

def dec_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    dec(cpu, addr)

Добавьте следующую запись в существующую OPCODE_TABLE:

0xD6: dec_zero_page_x,

Инварианты: потребляется один байт операнда; сумма базы и X переносится через $FF в пределах нулевой страницы; PC продвигается к следующей двухбайтовой инструкции; DEC записывает 8-битный результат и обновляет только Z/N.

Типичная ошибка: $FF,X при X=1 не указывает на $0100; индексированная адресация нулевой страницы разрешается в $0000 до выполнения DEC.

Вне области действия: dec_absolute/0xCE и dec_absolute_x/0xDE — это уроки 078–079.

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

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