Add asynchronous machine over and out to shared MCP

This commit is contained in:
Александр Петров
2026-09-17 23:32:46 +03:00
parent 259c782190
commit a8d0692eb2
15 changed files with 241 additions and 19 deletions
+13 -2
View File
@@ -11,8 +11,8 @@
`MAME.HT/plugins/mamebridge` вместе с `src/mame_mcp.py` публикует 30
raw-инструментов. Удалённый на этапе А `src/mame_bridge.lua` использовал тот
же Python frontend, но обрабатывал только 16 команд и не отвечал при hard-stop.
`toolchain/sdbg_mcp.py` публикует 29 C-инструментов через общую с DAP сессию
(31 в автономном режиме с командами start/stop).
`toolchain/sdbg_mcp.py` публикует 31 C-инструмент через общую с DAP сессию
(33 в автономном режиме с командами start/stop).
**Цель — покрыть возможности всех 30 raw-инструментов в C-сессии, а не
механически скопировать имена и небезопасную семантику.** Полный raw MCP
остаётся отдельным режимом для задач без C-пакета и других машин MAME.
@@ -169,6 +169,17 @@ C-строке. Это покрывает типовой строковый вв
сохраняет control lease и событие остановки. Живой автономный MCP-прогон
выполнил `count=3` в `main`, затем продолжил `hello` до `getchar()` и вышел
через клавишу. DAP source-step не менялся.
Отдельные машинные `step_over_instruction(count=1..64)` и
`step_out_instruction()` теперь асинхронны: MAME-команда может ждать ввод,
поэтому RPC не держит lock до остановки; события и Pause остаются доступны.
Живой `hello` подтвердил `over` через call, счётчик `over` до второго call и
`out` из возвращаемой функции `_gettextmode`. Вызов `out` из
`___sdcc_enter_ix` выявил tail-jump вместо RET и не останавливался быстро:
именно поэтому машинные over/out не должны быть синхронными. Отдельный живой
MCP-прогон получил ответ `out` за 8 мс и остановил долгий выход через Pause.
Консоль MAME
считает числа без префикса шестнадцатеричными; для `over count` и длины
`dasm` backend теперь передаёт явный десятичный префикс `#`.
## Г. Сделать запуск пригодным для Codex и Claude без VS Code