023. Sta página cero x

Añadir STA de página cero,X ($95).

Lección 23 de 356 · tests/chapter_01_cpu/test_023_STA_zero_page_x.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes.sta_zero_page_x
opcodes.OPCODE_TABLE[$95]

Por qué existe este paso

Esto reutiliza la instrucción sta del Test 022 y el modo de direccionamiento zero_page_x con envoltura del Test 017, mostrando que un manejador de opcode de almacenamiento solo combina un cálculo de dirección ya existente con la operación de escritura existente.

Implementación de ejemplo completa

# emulator/cpu/opcodes.py
def sta_zero_page_x(cpu) -> None:
    address = zero_page_x(cpu)
    sta(cpu, address)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x95: sta_zero_page_x,
}

Invariantes importantes

  • $95 consume un byte de operando
  • la base más X da la vuelta dentro de la página $00
  • el valor escrito es cpu.a
  • STA no modifica Zero ni Negative

Concepto erróneo habitual

El indexado de página cero no se propaga a la página $01; $FF,X con X=$01 apunta a $0000, no a $0100.

Fuera de alcance

  • cambios en zero_page_x o sta
  • opcodes de STA absoluto e indirecto
  • el tiempo de ciclos

Ejecutar esta lección

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