104. Rol acumulador
exponer ROL A como opcode ``0x2A``.
Lección 104 de 356 · tests/chapter_01_cpu/test_104_ROL_accumulator.py
En este paso, tras las lecciones 102-103 que definen `rol y rol_a`, añade las importaciones de ROL que necesitan los opcodes y la entrada de despacho de acumulador. Los modos de memoria posteriores y ROR permanecen en sus pasos numerados.
Implementación sugerida en las ubicaciones de producción
la lista de importaciones de `emulator/cpu/opcodes.py` gana::
rol, rol_a`emulator/cpu/opcodes.py::OPCODE_TABLE` gana::
0x2A: rol_a,Por qué existe este paso
El modo de acumulador no necesita adaptador porque `rol_a(cpu)` ya coincide con la firma del manejador de opcode.
Invariantes: obtener `0x2A avanza el PC una vez antes del despacho; rol_a` no consume ningún operando, así que el PC final es start+1, solo se rota A, y sus banderas C/Z/N conservan la semántica de la lección 103.
Concepto erróneo: no crees un envoltorio de modo de direccionamiento ni llames a `rol con A. El modo de acumulador ocupa un byte y se corresponde directamente con rol_a`.
Fuera de alcance: los adaptadores de opcode de memoria `0x26, 0x36, 0x2E y 0x3E` son las lecciones 105-108; todo el despacho de ROR es a partir de la lección 111.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_104_ROL_accumulator.py -v