059. Adc absolute y

Conectar ADC absolute,Y (opcode $79) al despacho de la CPU.

Lección 59 de 356 · tests/chapter_01_cpu/test_059_ADC_absolute_y.py

Archivo a actualizar

emulator/cpu/opcodes.py

Símbolos a crear/actualizar

opcodes.adc_absolute_y
OPCODE_TABLE[$79]

Por qué existe este paso

Este es el equivalente indexado por Y del test 058. absolute_y consume la dirección base de dos bytes y aplica Y; el manejador lee la ubicación resultante y delega el valor en adc.

Implementación de ejemplo completa

# 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,
}

Invariantes importantes

  • Y se aplica exactamente una vez, en absolute_y
  • la dirección efectiva no está restringida a la página cero
  • PC avanza tres bytes en total
  • el valor direccionado se pasa a adc

Concepto erróneo habitual

No copies el manejador de absolute,X dejándolo usar X; el opcode $79 indexa la dirección base con Y.

Fuera de alcance

  • los modos indirectos de ADC
  • las penalizaciones de tiempo por cruce de página
  • cambios en los ayudantes de direccionamiento o aritmética

Ejecutar esta lección

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