115. Ror absoluto x
completar ROR con el opcode absoluto,X ``0x7E``.
Lección 115 de 356 · tests/chapter_01_cpu/test_115_ROR_absolute_x.py
En este paso, tras la lección 114, añade solo el handler Absoluto,X y la entrada en la tabla en `emulator/cpu/opcodes.py`.
Por qué existe este paso
Esto completa la cobertura de direccionamiento de ROR resolviendo una dirección base little-endian completa más X antes de rotar el byte de memoria seleccionado.
Implementación sugerida
def ror_absolute_x(cpu: CPU):
addr = absolute_x(cpu)
ror(cpu, addr)
OPCODE_TABLE = {
...
0x7E: ror_absolute_x,
}`emulator/cpu/addressing_modes.py::absolute_x captura la base little-endian de 16 bits y luego suma cpu.x. Por tanto, 7E 00 02 con X 0x04 lee/modifica/escribe $0204 a través de instructions.ror. A se mantiene fijo, C/Z/N conservan la semántica de ROR y PC avanza tres bytes. A diferencia del modo página cero,X, el modo absoluto,X no hace wraparound en $00FF`.
Concepto erróneo: X indexa la dirección decodificada, no uno u otro byte del operando ni el valor cargado. Fuera del alcance: la temporización de ciclos y de cruce de página y todo el trabajo de AND, que comienza en la lección 116; no se añadió ningún modo ROR adicional después de esta lección.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_115_ROR_absolute_x.py -v