108. Rol absoluto x

conectar ROL Absolute,X (opcode ``0x3E``).

Lección 108 de 356 · tests/chapter_01_cpu/test_108_ROL_absolute_x.py

En este paso, completa la secuencia de ROL añadiendo únicamente el adaptador Absolute,X y la entrada de despacho tras la lección 107.

Implementación de ejemplo completa en las ubicaciones de producción

`emulator/cpu/opcodes.py::rol_absolute_x`::

def rol_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    rol(cpu, addr)

`emulator/cpu/opcodes.py::OPCODE_TABLE`::

0x3E: rol_absolute_x,

Por qué existe este paso

`absolute_x centraliza la decodificación little-endian y la indexación con X; rol` se encarga únicamente de la semántica de la operación.

Invariantes: consume dos bytes de operando, decodifica la base de 16 bits y luego suma X; `3E 00 02 con X=0x04 apunta a $0204` y el PC termina en start+3. El comportamiento C/Z/N de la primitiva de memoria permanece sin cambios.

Concepto erróneo: no indexes un único byte de operando ni apliques el ajuste de página cero; este modo indexa la base absoluta de 16 bits ya decodificada.

Fuera de alcance: las primitivas de ROR empiezan en 109 y los opcodes de ROR en 111; el comportamiento de cruce de página y de lectura/modificación/escritura con precisión de ciclos es trabajo posterior.

Ejecutar esta lección

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