144. Bit zero page

добавить опкод BIT zero-page ``0x24``.

Урок 144 из 356 · tests/chapter_01_cpu/test_144_BIT_zero_page.py

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

Первый опкод BIT должен извлечь операнд из памяти, а не изменять A, а затем делегировать свою особую логику Z/N/V примитиву инструкции.

На этом шаге урок 143 уже добавляет `bit. Поскольку это первый опкод BIT, добавьте его импорт и ровно следующий обработчик/запись в таблице в emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import (..., bit)

def bit_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    value = cpu.bus.read(addr)
    bit(cpu, value)

OPCODE_TABLE = {
    ...
    0x24: bit_zero_page,
}

`addressing_modes.zero_page` использует операнд как адрес; чтение по шине предоставляет значение, биты которого проверяет BIT. Z/N/V могут измениться, тогда как A, Carry, X, Y и память неизменны; опкод и операнд продвигают PC на два байта.

Заблуждение: байт операнда не проверяется напрямую, и BIT не записывает значение по указанному адресу. Вне рамок урока: BIT absolute — урок 145.

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

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