057. Adc absolute

Conectar ADC absolute (opcode $6D) al despacho de la CPU.

Lección 57 de 356 · tests/chapter_01_cpu/test_057_ADC_absolute.py

Archivo a actualizar

emulator/cpu/opcodes.py

Símbolos a crear/actualizar

opcodes.adc_absolute
OPCODE_TABLE[$6D]

Por qué existe este paso

El modo absolute amplía ADC a una dirección de operando de 16 bits en little-endian. El ayudante absolute existente consume esa palabra; el manejador de opcode lee el byte de la dirección y delega la aritmética en adc.

Implementación de ejemplo completa

# emulator/cpu/opcodes.py
def adc_absolute(cpu):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    adc(cpu, value)

OPCODE_TABLE = {
    # ...existing entries...
    0x6D: adc_absolute,
}

Invariantes importantes

  • absolute combina el byte bajo del operando antes que el byte alto
  • el manejador lee de la dirección de 16 bits resultante
  • PC avanza tres bytes en total
  • adc sigue siendo el único responsable de la aritmética y del comportamiento de las banderas

Concepto erróneo habitual

No pases la dirección de 16 bits obtenida a adc; primero lee el byte almacenado en esa dirección.

Fuera de alcance

  • los modos absolute,X y absolute,Y de ADC
  • el ajuste de tiempo por cruce de página
  • cambios en absolute o en adc

Ejecutar esta lección

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