193. Instrucción pha

implementar el comportamiento de PHA.

Lección 193 de 356 · tests/chapter_01_cpu/test_193_instruction_pha.py

En este paso, modifica únicamente `emulator/cpu/instructions.py añadiendo pha(cpu). La página de pila comienza en STACK_BASE = 0x0100`.

Por qué existe este paso

PHA copia A en la pila de hardware del 6502. Un push escribe primero en la posición actual $0100 | S y después decrementa el puntero de pila de 8 bits.

Implementación sugerida

cpu.bus.write(0x0100 | cpu.s, cpu.a)
cpu.s = (cpu.s - 1) & 0xFF

Coloca esas sentencias en `def pha(cpu: CPU); usar STACK_BASE = 0x0100` a nivel de módulo en lugar del literal es equivalente.

Invariantes: apila exactamente A; escribe antes de decrementar; ajusta S a ocho bits; deja A y todos los flags de estado sin cambios.

Concepto erróneo: decrementar S de antemano no implementa un push del 6502; escribe en la siguiente posición libre en lugar de en la posición actual de la pila.

Fuera de alcance: importar/registrar el opcode $48 corresponde al paso 194. PLA, PHP, PLP, TXS y TSX corresponden a los pasos posteriores 195-204 y no deben añadirse aquí.

Ejecutar esta lección

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