使用说明
mcp winuae emu
一 主控程序 通过WinUAE模拟器提供Amiga 68k调试工具的服务器。它连接到一个 自定义WinUAE分叉 通过GDB远程串行协议(RSP),AI助手可以直接对模拟的Amiga硬件进行读写访问。
它的作用
该服务器允许AI助手(Claude等)启动WinUAE,连接到其GDB服务器,然后读取/写入内存、读取/写入寄存器、设置断点、单步执行代码、反汇编铜列表等,所有这些都是通过MCP工具调用完成的。
快速开始
1.下载预构建的WinUAE二进制文件
下载 winuae-gdb.exe 从 WinUAE分叉发布 并将其放置在目录中(例如。, C:\apps\winuae\).
这是一个自定义版本 BartmanAbyss的WinUAE分叉 添加了寄存器和内存写入支持。看 补丁详细信息.
2.安装MCP服务器
git clone https://github.com/axewater/mcp-winuae-emu.git
cd mcp-winuae-emu
npm install
npm run build
3.添加到克劳德代码
添加到MCP设置(~/.claude/claude_desktop_config.json 或项目 .mcp.json):
{
"mcpServers": {
"winuae-emu": {
"command": "node",
"args": ["C:/path/to/mcp-winuae-emu/dist/index.js"],
"env": {
"WINUAE_PATH": "C:/apps/winuae",
"WINUAE_CONFIG": "C:/apps/winuae/Configurations/A500-Dev.uae"
}
}
}
}
4.提供Kickstart ROM和配置
你需要一个有效的Amiga Kickstart ROM文件(例如,A500的Kickstart 1.3)和一个WinUAE .uae 配置文件。最小配置:
cpu_type=68000
chipset=ocs
chipmem_size=1
kickstart_rom_file=C:\path\to\kickstart.rom
服务器读取您的配置,合并GDB所需的设置,并启动 winuae-gdb.exe 自动。
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
WINUAE_PATH |
C:\apps\winuae |
目录包含 winuae-gdb.exe |
WINUAE_CONFIG |
<WINUAE_PATH>\Configurations\A500-Dev.uae |
通往您的道路 .uae 配置文件 |
WINUAE_GDB_PORT |
2345 |
GDB服务器TCP端口 |
WINUAE_DEBUG |
0 |
设置为 1 启用GDB协议调试日志记录 |
工具
连接
| 工具 | 说明 |
|---|---|
winuae_connect |
启动WinUAE并连接到GDB服务器 |
winuae_disconnect |
断开并停止模拟器 |
winuae_status |
检查是否连接和响应 |
记忆
| 工具 | 说明 |
|---|---|
winuae_memory_read |
以十六进制读取内存字节 |
winuae_memory_write |
将十六进制字节写入内存 |
winuae_memory_dump |
十六进制+ASCII转储(类似于十六进制编辑器) |
winuae_load |
将二进制文件加载到Amiga内存中 |
中央处理器
| 工具 | 说明 |
|---|---|
winuae_registers_get |
读取所有m68k寄存器(D0-D7、A0-A7、SR、PC) |
winuae_registers_set |
写入寄存器(D0-D7、A0-A7、SR、PC的任何子集) |
winuae_step |
单步N指令 |
winuae_continue |
恢复执行 |
winuae_pause |
暂停执行并读取寄存器 |
winuae_reset |
暂停CPU并读取当前寄存器状态 |
断点和观察点
| 工具 | 说明 |
|---|---|
winuae_breakpoint_set |
在某个地址设置软件断点 |
winuae_breakpoint_clear |
删除断点 |
winuae_watchpoint_set |
内存读/写/访问中断 |
winuae_watchpoint_clear |
删除观察点 |
Amiga硬件
| 工具 | 说明 |
|---|---|
winuae_custom_registers |
读取并解码所有自定义芯片寄存器($DFF000-$DFF1FE) |
winuae_copper_disassemble |
解码铜列表(等待、移动、跳过、结束) |
winuae_disassemble |
m68k基本拆卸 |
运作原理
- 发射:阅读您的
.uaeconfig,合并GDB设置,生成winuae-gdb.exe -portable -G -s debugging_features=gdbserver -s debugging_trigger= - 连接:检索到的TCP连接
localhost:2345直到GDB服务器准备就绪 - 协议:通过以下方式进行沟通 GDB RSP --数据包帧、校验和、ack模式、寄存器/内存命令、断点命令等。
技术说明
- 这
-G旗和-s覆盖 必须 是CLI参数。此WinUAE内部版本(v4.10.1)忽略use_gui和debugging_features在配置文件中设置时。 - GDB服务器发送
O连接时的数据包(控制台输出)。协议处理程序会自动跳过这些。 - 自定义芯片寄存器读取使用64字节块,因为GDB服务器对硬件I/O地址有读取大小限制。
- ECS/AGA专用寄存器($DFF1C0+)在OCS芯片组配置上返回零。
- CIA寄存器($BFE001/$BFD000)不能通过GDB内存读取接口访问。
学分
- WinUAE 托尼·威伦——Amiga模拟器
- BartmanAbyss WinUAE叉子 --将GDB服务器添加到WinUAE
- Vscode amug BartmanAbyss——率先进行Amiga GDB调试的VSCode扩展,以及这项工作的参考
- 模型上下文协议 通过Anthropic
局限性
- 仅限Windows --需要WinUAE
- 基本拆卸 --反汇编程序只识别少数操作码(RTS、NOP、RTE等);所有其他显示为
DC.W - 中情局无法访问 --CIA-A/CIA-B寄存器未通过GDB服务器映射
- 单个连接 --GDB服务器一次接受一个客户端
许可证
麻省理工学院