090. Asl accumulator

Conectar el opcode ASL de acumulador.

Lección 90 de 356 · tests/chapter_01_cpu/test_090_ASL_accumulator.py

En este paso, usa asl_a del Test 089 y añade únicamente el despacho al acumulador. Los Tests 091-094 añaden las formas de memoria.

Ubicación y símbolos en producción

emulator/cpu/opcodes.py: imported `asl_a` and `OPCODE_TABLE[0x0A]`

Por qué existe este paso

El opcode 0x0A selecciona el propio acumulador, así que el despacho puede llamar directamente a asl_a(cpu) en lugar de resolver una dirección de memoria.

Implementación sugerida para este paso

# emulator/cpu/opcodes.py
from emulator.cpu.instructions import asl_a  # alongside existing imports

OPCODE_TABLE = {
    # ... existing entries ...
    0x0A: asl_a,
}

Invariantes importantes

  • el opcode 0x0A se mapea exactamente a la función asl_a(cpu)
  • no se produce ningún ayudante de direccionamiento ni lectura/escritura de memoria
  • esta instrucción de un byte avanza el PC en exactamente uno
  • la función del test 089 es responsable del enmascarado de A y de las actualizaciones de C/Z/N

Concepto erróneo habitual

ASL A no es ASL de página cero con el operando omitido; es una forma de acumulador distinta y, por tanto, no necesita ningún wrapper de direccionamiento asl_*.

Fuera de alcance

  • asl_zero_page, asl_zero_page_x, asl_absolute y asl_absolute_x
  • los mapeos 0x06, 0x16, 0x0E y 0x1E de los tests 091-094
  • el temporizado de ciclos y el comportamiento de lectura-modificación-escritura fiel al bus

Ejecutar esta lección

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