126. ORA, непосредственная адресация

предоставить ORA immediate как опкод ``0x09``.

Урок 126 из 356 · tests/chapter_01_cpu/test_126_ORA_immediate.py

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

Опкод непосредственной адресации предоставляет ORA для выполнения CPU с байтом-литералом и проверяет, что декодирование делегирует обработку результата и флагов общему примитиву.

На этом шаге, после того как урок 125 создаёт `or_a, внесите следующие дополнения в emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import (..., and_a, or_a)

def ora_immediate(cpu: CPU):
    or_a(cpu, immediate(cpu))

OPCODE_TABLE = {
    ...
    0x09: ora_immediate,
}

`emulator/cpu/addressing_modes.py::immediate напрямую возвращает байт, полученный через CPU.fetch_byte. instructions.or_a` сохраняет A | value и изменяет только Z/N; флаг переноса/переполнения и память остаются неизменными, а опкод плюс операнд продвигают PC на два байта.

Заблуждение: непосредственный байт и есть значение, поэтому повторное чтение его через `cpu.bus` неверно трактовало бы его как адрес. Вне рамок: обработчики ORA, работающие с памятью (уроки 127-133), а также импорт и обработчики EOR/BIT в уроках 134-145.

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

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