112. Ror página cero
añadir el opcode ROR de página cero ``0x66``.
Lección 112 de 356 · tests/chapter_01_cpu/test_112_ROR_zero_page.py
En este paso, tras la lección 111, añade `ror a las importaciones de instrucciones en emulator/cpu/opcodes.py` y añade el handler de página cero y la entrada en la tabla.
Por qué existe este paso
Esto conecta la operación de memoria ROR compartida con la primera forma compacta de direccionamiento, demostrando que una dirección de página cero codificada selecciona el byte que se va a rotar.
Implementación sugerida
def ror_zero_page(cpu: CPU):
addr = zero_page(cpu)
ror(cpu, addr)
OPCODE_TABLE = {
...
0x66: ror_zero_page,
}`zero_page ya existe en emulator/cpu/addressing_modes.py y captura un byte. ror ya existe en emulator/cpu/instructions.py; realiza la lectura/modificación/escritura en el bus, rota a través del Carry antiguo, fija Carry a partir del bit 0 antiguo y fija Zero/Negative a partir del resultado. Así, 66 10 modifica cpu.bus[$0010]`, no A, y PC avanza dos bytes en total.
Concepto erróneo: el `0x10 capturado es una dirección, no el valor que se pasa a ror`. Fuera del alcance: los modos ROR indexado y absoluto son las lecciones 113-115; no dupliques la lógica de direccionamiento o de rotación en este handler de opcode.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_112_ROR_zero_page.py -v