111. Ror acumulador
exponer el ROR A ya construido como opcode ``0x6A``.
Lección 111 de 356 · tests/chapter_01_cpu/test_111_ROR_accumulator.py
En este paso, usa `ror y ror_a de las lecciones 109-110 y añade solo la integración del opcode del acumulador en emulator/cpu/opcodes.py`.
Por qué existe este paso
ROR A necesita una entrada en la tabla de opcodes antes de que los programas puedan alcanzar la primitiva del acumulador mediante la ejecución normal de la CPU sin captar un operando de forma incorrecta.
Implementación sugerida
from emulator.cpu.instructions import (..., ror_a)
OPCODE_TABLE = {
...
0x6A: ror_a,
}La entrada directa en la tabla es la implementación de ejemplo completa: `CPU.step ya ha captado el opcode y ror_a(cpu)` no necesita ningún decodificador de operando. Rota A hacia la derecha a través del Carry antiguo, mueve el bit 0 antiguo de A a Carry, actualiza Zero/Negative a partir del resultado de 8 bits y deja la memoria intacta. Por tanto, la instrucción de un byte avanza PC exactamente en uno.
Concepto erróneo: el modo acumulador no es un wrapper de un modo de direccionamiento; añadir un handler `ror_accumulator o captar un operando consumiría un byte adicional. Fuera del alcance aquí: los handlers/opcodes de memoria 0x66, 0x76, 0x6E y 0x7E` pertenecen a las lecciones 112-115; AND comienza en la lección 116.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_111_ROR_accumulator.py -v