061. Adc indirect y
Añadir ADC (Indirect),Y.
Lección 61 de 356 · tests/chapter_01_cpu/test_061_ADC_indirect_y.py
Archivo a actualizar
emulator/cpu/opcodes.pySímbolos a añadir/actualizar
opcodes.adc_indirect_y and OPCODE_TABLE[0x71]Por qué existe este paso
Esta variante de direccionamiento final de ADC conecta el asistente de direcciones indirect_y existente con la instrucción adc basada en valores para el opcode $71.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def adc_indirect_y(cpu: CPU):
addr = indirect_y(cpu)
value = cpu.bus.read(addr)
adc(cpu, value)
OPCODE_TABLE = {
# ... existing entries ...
0x71: adc_indirect_y,
}Invariantes importantes
indirect_yobtiene el operando de un byte y devuelve la dirección final- el manejador lee el valor de esa dirección exactamente una vez
adc, y no el manejador, actualiza A y las flags aritméticas- ejecutar la instrucción de dos bytes avanza PC en dos bytes
Concepto erróneo común
No pases la dirección devuelta por indirect_y directamente a adc; adc acepta el byte almacenado en esa dirección.
Fuera de alcance
- SBC y sus manejadores de opcode
- nuevos asistentes de modo de direccionamiento o refactorizaciones
- temporización de ciclos y penalizaciones por cruce de página
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_061_ADC_indirect_y.py -v