Add bounded MCP text input for Sprinter programs
This commit is contained in:
+13
-5
@@ -76,7 +76,8 @@ MCP-сервером MAME и удаляет socket. Закрытие самог
|
||||
Доступные инструменты: `session_status`, `where`, `read_registers`,
|
||||
`read_memory`, `read_program_memory`, `disassemble_logical`, `list_ports`,
|
||||
`list_shares`, `read_share`, `read_vram`,
|
||||
`read_screen_pixels`, `screenshot`, `press_key`, `list_variables`, `read_variable`, `recent_events`,
|
||||
`read_screen_pixels`, `screenshot`, `press_key`, `type_string`,
|
||||
`list_variables`, `read_variable`, `recent_events`,
|
||||
`mame_console_tail`, `set_line_breakpoint`, `set_function_breakpoint`,
|
||||
`list_breakpoints`, `clear_breakpoint`, `clear_my_breakpoints`,
|
||||
`claim_control`, `release_control`,
|
||||
@@ -87,7 +88,7 @@ MCP-сервером MAME и удаляет socket. Закрытие самог
|
||||
`recent_events` с курсором `last`. Логи `SDBG_LOG` приходят как события
|
||||
`output`; журнал ограничен 1024 событиями и сообщает `first`/`last`/`lost`.
|
||||
|
||||
Число 28 в attach-режиме (30 в автономном с `start_session`/`stop_session`)
|
||||
Число 29 в attach-режиме (31 в автономном с `start_session`/`stop_session`)
|
||||
не означает полного переноса более нового `-plugin mamebridge`:
|
||||
его `src/mame_mcp.py` публикует 30 raw-инструментов, ориентированных на
|
||||
машину MAME. Здесь инструменты сгруппированы по операциям C-сессии, а
|
||||
@@ -98,7 +99,7 @@ MCP-сервером MAME и удаляет socket. Закрытие самог
|
||||
|---|---|
|
||||
| `setmem`, raw `debugger_command`, watchpoints | Проверка прав, банка, диапазона и согласование с DAP-точками; произвольная debugger-команда может нарушить состояние сессии |
|
||||
| VRAM/shares, screen pixels, screenshot | Реализованы через общий `sdbgbridge`; точный tag, пределы 4096 байт/8192 пикселя, PNG только в каталоге сессии |
|
||||
| Клавиатура, мышь, type/press | `list_ports` и одиночный `press_key` уже перенесены; набор строки, произвольные поля портов и мышь требуют отдельного контракта ввода |
|
||||
| Клавиатура, мышь, type/press | `list_ports`, одиночный `press_key` и ограниченный `type_string` перенесены; natural keyboard, произвольные поля портов и мышь требуют отдельного контракта |
|
||||
| Raw disassembly | Текущее окно logical Z80 уже доступно через `disassemble_logical`; адреса raw program вне отображённого банка требуют отдельного безопасного режима |
|
||||
|
||||
Это следующий этап, а не запрет на функции raw MCP. Нельзя просто загрузить
|
||||
@@ -146,8 +147,15 @@ CPU, после запуска EXE; применяется общий control le
|
||||
Ответ сообщает число прошедших кадров и признак остановки. Живой автономный
|
||||
MCP-прогон ввёл `x` в ожидающий `getchar()` и дошёл до следующей C-строки.
|
||||
Прямой физический ввод в MAME проверялся отдельно; `press_key` не заменяет
|
||||
его. Набор строки, произвольные имена клавиш, мышь и порты ввода ещё не
|
||||
публичны в C-MCP.
|
||||
его. `type_string` принимает 1..64 символа той же PC-раскладки, включая
|
||||
реальный перевод строки `\n` для Enter. Все символы проверяются до первого
|
||||
нажатия. Каждый символ удерживается три кадра и затем отпускается;
|
||||
между символами выдерживаются четыре кадра. При stop дальнейший набор
|
||||
прекращается, ответ сообщает `requested`, `typed`, `complete` и `stopped`.
|
||||
Живой тест `gets()` получил `Ab9` и Enter; снимок показал введённую и
|
||||
напечатанную строку, а CPU остановился на следующей C-строке. Ввод через
|
||||
natural keyboard, произвольные имена физических клавиш, мышь и поля портов
|
||||
пока не публичны в C-MCP.
|
||||
|
||||
`list_breakpoints` возвращает логические ID, владельца (`mcp:…`, `dap` или
|
||||
`build`), вид C-точки, адреса и фактические условия банковской страницы для
|
||||
|
||||
Reference in New Issue
Block a user