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) & 0xFFColoca 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