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