073. Inc zero page x

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

Урок 73 из 356 · tests/chapter_01_cpu/test_073_INC_zero_page_x.py

На этом шаге используйте instructions.inc и импорт INC из уроков 071–072, затем добавьте только emulator/cpu/opcodes.py:inc_zero_page_x и OPCODE_TABLE[0xF6].

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

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

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

def inc_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    inc(cpu, addr)

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

0xF6: inc_zero_page_x,

Инварианты: zero_page_x(cpu) потребляет один байт, прибавляет cpu.x и ограничивает эффективный адрес диапазоном $0000-$00FF; PC продвигается к следующей двухбайтовой инструкции; inc выполняет изменение памяти и обновляет только Z/N.

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

Вне области действия: обработчики и отображения absolute и absolute-X INC — это уроки 074–075.

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

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