075. Inc absolute x

подключить INC Absolute,X (`0xFE`).

Урок 75 из 356 · tests/chapter_01_cpu/test_075_INC_absolute_x.py

На этом шаге добавьте emulator/cpu/opcodes.py:inc_absolute_x и OPCODE_TABLE[0xFE] после остальных форм INC из уроков 071–074.

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

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

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

def inc_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    inc(cpu, addr)

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

0xFE: inc_absolute_x,

Инварианты: потребляются два байта операнда в порядке little-endian; X прибавляется к 16-битному базовому адресу; PC продвигается на два после извлечения опкода, что даёт трёхбайтовую инструкцию; результат в памяти приводится по модулю 256; только Z/N следуют за ним.

Типичная ошибка: индексация absolute-X не использует перенос через ноль нулевой страницы. Возможен переход через границу страницы, поэтому $02FF,X при X=1 разрешается в $0300.

Вне области действия: DEC начинается с урока 076. Учёт тактов и задержки при пересечении страниц не входят в этот шаг.

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

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