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