119. AND для нулевой страницы с индексом X

добавить код операции ``0x35`` для AND zero-page,X.

Урок 119 из 356 · tests/chapter_01_cpu/test_119_AND_zero_page_x.py

На этом шаге, после урока 118, добавьте только обработчик индексированного режима нулевой страницы и запись в таблице в `emulator/cpu/opcodes.py`.

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

Это добавляет индексированный доступ к AND в нулевой странице и проверяет, что вычисление адреса заворачивается в пределах нулевой страницы до того, как значение из памяти достигнет примитива AND.

Предлагаемая реализация

def and_zero_page_x(cpu: CPU):
    addr = zero_page_x(cpu)
    value = cpu.bus.read(addr)
    and_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x35: and_zero_page_x,
}

`emulator/cpu/addressing_modes.py::zero_page_x вычисляет (base + cpu.x) & 0xFF. Найденный байт концептуально читается один раз и передается в instructions.and_a: изменяются A и Z/N, Carry/Overflow и память — нет, а PC увеличивается на два байта. База 0xFE плюс X 0x03 должны привести к чтению $0001, а не $0101`.

Заблуждение: индексация не изменяет данные и должна выполнять заворачивание до чтения на шине. Вне области задачи: AND в режимах от absolute до indirect,Y (уроки 120-124), а также изменения уже существующей вспомогательной функции адресации или семантики инструкции.

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

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