037. Stx página cero

Añadir STX página cero ($86).

Lección 37 de 356 · tests/chapter_01_cpu/test_037_STX_zero_page.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes import of stx
opcodes.stx_zero_page
opcodes.OPCODE_TABLE[$86]

Por qué existe este paso

El test 036 añadió la operación stx a nivel de dirección. Esta lección conecta su primera codificación resolviendo un destino de página cero y pasando esa dirección a stx.

Implementación de ejemplo completa

# emulator/cpu/opcodes.py
from emulator.cpu.instructions import lda, sta, ldx, stx


def stx_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    stx(cpu, addr)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x86: stx_zero_page,
}

Invariantes importantes

  • $86 se corresponde con stx_zero_page
  • zero_page consume un byte de operando y devuelve una dirección de la página $00
  • se pasa a stx la dirección, no su contenido actual
  • la instrucción completa avanza PC en dos y deja los flags sin cambios

Concepto erróneo habitual

No leas de la dirección resuelta antes de llamar a stx; STX escribe X en ese destino.

Fuera de alcance

  • las codificaciones de STX en página cero,Y y absoluto
  • cambios en zero_page o stx
  • la temporización de ciclos

Ejecutar esta lección

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