055. Adc zero page
Conectar ADC zero page (opcode $65) al despacho de la CPU.
Lección 55 de 356 · tests/chapter_01_cpu/test_055_ADC_zero_page.py
Archivo a actualizar
emulator/cpu/opcodes.pySímbolos a crear/actualizar
opcodes.adc_zero_page
OPCODE_TABLE[$65]Por qué existe este paso
A diferencia del modo immediate, zero_page(cpu) resuelve el byte de operando a una dirección. El manejador debe leer el valor en esa dirección antes de pasarlo a la instrucción adc existente.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def adc_zero_page(cpu):
addr = zero_page(cpu)
value = cpu.bus.read(addr)
adc(cpu, value)
OPCODE_TABLE = {
# ...existing entries...
0x65: adc_zero_page,
}Invariantes importantes
- el operando de un byte es una dirección en $0000-$00FF
- se lee exactamente un valor de datos y se pasa a
adc - PC avanza dos bytes en total
- la resolución de direcciones permanece en la capa de opcodes
Concepto erróneo habitual
No pases la propia dirección de zero page a adc; ADC suma el byte almacenado en esa dirección.
Fuera de alcance
- los modos indexado, absoluto e indirecto de ADC
- cambios en
zero_pageo enadc - la contabilidad de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_055_ADC_zero_page.py -v