201. Инструкция txs

реализовать операцию TXS.

Урок 201 из 356 · tests/chapter_01_cpu/test_201_instruction_txs.py

Зачем нужен этот шаг

На этом шаге добавьте `emulator/cpu/instructions.py::txs`. Эта операция вводится сейчас, потому что переносы стека — это оставшаяся часть поведения стековых инструкций: X копируется в байт указателя стека без обращения к памяти.

Предлагаемая реализация

def txs(cpu: CPU):
    cpu.s = cpu.x

Инварианты: X, P, PC, A, Y и память не изменяются; S остаётся смещением младшего байта в уже установленной странице стека $0100-$01FF. Распространённое заблуждение — обновлять флаги Zero и Negative, как это делают другие переносы регистров; TXS не меняет ни один флаг, даже когда X равен $00 или имеет установленный бит 7.

Вне рамок: регистрация неявного опкода $9A в `emulator/cpu/opcodes.py::OPCODE_TABLE` относится к шагу 202; TSX и его опкод относятся к шагам 203-204. Не добавляйте эти API здесь.

Запустить этот урок

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