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_absoluteyasl_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