097. Lsr accumulator

Añadir el opcode LSR Accumulator.

Lección 97 de 356 · tests/chapter_01_cpu/test_097_LSR_accumulator.py

En este paso, expone el comportamiento con el acumulador del test 096 a través del despacho de opcodes.

Archivo y símbolos

emulator/cpu/opcodes.py: imported lsr_a, OPCODE_TABLE[0x4A]

Por qué existe este paso

El test 096 estableció el comportamiento con el acumulador. Esta transición hace que el despacho de la CPU llegue directamente a esa función, ya que el modo de acumulador no tiene operando ni decodificación de dirección.

Implementación sugerida para este paso

# emulator/cpu/opcodes.py
from emulator.cpu.instructions import lsr_a

OPCODE_TABLE = {
    # existing entries unchanged
    0x4A: lsr_a,
}

Invariantes importantes

  • la tabla mapea directamente a instructions.lsr_a; no se necesita ningún envoltorio
  • ningún ayudante de direccionamiento consume bytes
  • CPU.step ya ha consumido el opcode, por lo que PC avanza exactamente un byte
  • solo pueden cambiar A y C/Z/N

Error conceptual habitual

El modo de acumulador no es el modo de página cero con una dirección implícita; 0x4A no tiene operando.

Fuera de alcance

  • los opcodes de LSR en memoria en los tests 098-101
  • cambios en el despacho de la CPU o en lsr_a
  • la precisión de ciclos

Ejecutar esta lección

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