113. Ror página cero x
añadir el opcode ROR de página cero,X ``0x76``.
Lección 113 de 356 · tests/chapter_01_cpu/test_113_ROR_zero_page_x.py
En este paso, con `ror importado por la lección 112, añade solo el handler indexado de página cero y la entrada en la tabla en emulator/cpu/opcodes.py`.
Por qué existe este paso
El ROR de página cero indexado debe combinar X con una dirección base de ocho bits, incluido el wraparound de página cero, antes de aplicar las reglas de rotación ya establecidas.
Implementación sugerida
def ror_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
ror(cpu, addr)
OPCODE_TABLE = {
...
0x76: ror_zero_page_x,
}`emulator/cpu/addressing_modes.py::zero_page_x captura el byte base y calcula (base + cpu.x) & 0xFF. instructions.ror es responsable de la lectura/escritura en memoria y de los cambios de C/Z/N. El invariante es el wraparound de página cero: la base 0xFE más X 0x03 apunta a 0x0001, nunca a 0x0101`; PC avanza dos bytes y A no cambia.
Concepto erróneo: la suma de enteros ordinaria no es suficiente para el indexado de página cero. Fuera del alcance: ROR absoluto y absoluto,X (lecciones 114-115), y cualquier nueva implementación de rotación o helper de direccionamiento.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_113_ROR_zero_page_x.py -v