176. Bpl с относительной адресацией

подключить BPL к её относительному опкоду.

Урок 176 из 356 · tests/chapter_01_cpu/test_176_BPL_relative.py

Предварительное условие: на шаге 175 был подключён BNE. На этом шаге добавьте следующее в `emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import bpl

def bpl_relative(cpu: CPU):
    offset = relative(cpu)
    bpl(cpu, offset)

OPCODE_TABLE[0x10] = bpl_relative

Встройте импорт и запись в существующий сгруппированный импорт и литерал таблицы.

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

`relative считывает операнд, а instructions.bpl` из шага 168 интерпретирует «плюс» как сброшенный флаг знака перед изменением PC.

Инварианты: `0x10` сопоставляется с обработчиком с одним аргументом; оба исхода считывают знаковый операнд; при сброшенном флаге знака переход выполняется относительно PC после операнда, а при установленном флаге знака — нет. Флаги и память остаются неизменными. Заблуждение: BPL не проверяет, положительно ли смещение или PC; она проверяет только флаг знака.

Вне рамок этого шага: подключение опкодов BMI/BVC/BVS вводится шагами 177–179, а косвенная адресация JMP — это шаг 180.

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

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