059. Adc absolute y
Подключить ADC absolute,Y (опкод $79) к диспетчеризации CPU.
Урок 59 из 356 · tests/chapter_01_cpu/test_059_ADC_absolute_y.py
Файл для обновления
emulator/cpu/opcodes.pyСимволы для создания/обновления
opcodes.adc_absolute_y
OPCODE_TABLE[$79]Почему этот шаг нужен
Это аналог теста 058 с индексацией по Y. absolute_y потребляет двухбайтовый базовый адрес и применяет Y; обработчик считывает данные по полученному адресу и передаёт значение в adc.
Полный пример реализации
# emulator/cpu/opcodes.py
def adc_absolute_y(cpu):
addr = absolute_y(cpu)
value = cpu.bus.read(addr)
adc(cpu, value)
OPCODE_TABLE = {
# ...existing entries...
0x79: adc_absolute_y,
}Важные инварианты
- Y применяется ровно один раз в
absolute_y - эффективный адрес не ограничен нулевой страницей
- PC продвигается всего на три байта
- значение по адресу передаётся в
adc
Распространённое заблуждение
Не копируйте обработчик absolute,X, оставив в нём X; опкод $79 индексирует базовый адрес с помощью Y.
Вне рамок задачи
- косвенные режимы ADC
- штрафы по таймингу при пересечении страниц
- изменения во вспомогательных методах адресации или арифметики
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_059_ADC_absolute_y.py -v