145. Bit absolute

добавить опкод BIT absolute ``0x2C``.

Урок 145 из 356 · tests/chapter_01_cpu/test_145_BIT_absolute.py

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

Абсолютный режим BIT расширяет проверку только флагов на всё адресное пространство и проверяет, что двухбайтовый операнд декодируется как little-endian адрес памяти.

На этом шаге, с семантикой BIT и его импортом опкода, установленными в уроках 143–144, добавьте в `emulator/cpu/opcodes.py` ровно следующее:

def bit_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    bit(cpu, value)

OPCODE_TABLE = {
    ...
    0x2C: bit_absolute,
}

`emulator/cpu/addressing_modes.py::absolute использует CPU.fetch_word` для декодирования little-endian адреса. Обработчик выполняет одно чтение по шине, и BIT только потребляет это значение. Z/N/V могут измениться; A, Carry, X, Y и память остаются неизменными; опкод и слово продвигают PC на три байта.

Заблуждение: `2C 02 20 не проверяет литерал $2002`; он читает по этому адресу, а любые побочные эффекты на стороне шины остаются поведением шины. Вне рамок урока: CMP и его опкоды сравнения начинаются в уроке 146.

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

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