6502模拟器工具包

6502MCP是一个可重用的Swift包,提供6502模拟器和汇编器功能,通过MCP服务器供LLM如Codex或Claude Code编写、汇编、运行、调试和检查6502程序。

  • by GrantMeStrength
  • Swift
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 GrantMeStrength/6502MCP

使用说明

6502MCP

6502MCP是一个项目,它为VirtualKim iOS应用程序完成工作,并将6502仿真器和汇编器提取到可重用的Swift包中,然后通过MCP(模型上下文协议)服务器公开它们。

通过使用6502MCP,Codex或Claude Code等LLM可以通过MCP工具调用比单独使用模型推理更准确地编写、组装、运行、调试和检查6502程序。

这在调试自己的6502代码时应该很有用。

我还没有尝试过,但在提示(或最好是配置文件)中描述基于6502的特定硬件(使用零页、有用的ROM调用等)可能会让一些特定于机器的项目工作。

这个项目做什么

  • 仿真器6502(库):6502 CPU、内存映射、双通道汇编程序(带列表和符号表)、KIM-1和Apple 1 ROM加载器、MOS 6532 RIOT仿真和实用程序加载器。
  • MCPServer(可执行):基于stdio的MCP JSON-RPC服务器,将仿真器和汇编器作为工具公开。

Mac快速入门(bash)

#!/usr/bin/env bash
set -euo pipefail

# Install Xcode Command Line Tools if needed.
xcode-select --install || true

# Clone and build.
cd ~/Developer
git clone https://github.com/GrantMeStrength/6502MCP.git
cd 6502MCP
swift build
swift test

Claude代码设置(bash)

#!/usr/bin/env bash
set -euo pipefail

cd ~/Developer/6502MCP
claude mcp add --transport stdio 6502mcp -- swift run MCPServer
claude

Codex设置(bash)

#!/usr/bin/env bash
set -euo pipefail

cd ~/Developer/6502MCP
codex mcp add 6502mcp -- swift run MCPServer
codex

构建

swift build

运行MCP服务器(stdio)

swift run MCPServer

服务器通过stdio使用MCP JSON-RPC进行通信 Content-Length 构建并写入模拟器日志 标准错误 因此JSON保留在stdout上。

MCP客户端配置示例(stdio)

  • 命令: swift
  • 参数: run MCPServer
  • 工作目录: ~/Developer/6502MCP

包含的工具

工具 说明 必需参数 可选参数
assemble 将6502源代码汇编成目标代码和列表。返回原点、对象代码、列表和符号表。 source (字符串) --
assemble_and_load 组装6502源,将其加载到内存中,并将PC设置为原点。 source (字符串) --
load 将原始字节加载到给定源地址的内存中。 origin (int), bytes (int数组) --
reset 重置模拟器并重新加载默认内存映射。 — computer ("KIM1" 违约,或 "APL" 苹果1)
set_pc 设置程序计数器。 address (int) --
run 运行CPU多个步骤。BRK早停。 -- steps (int,默认值1000), startAddress (int)
read_memory 读取一系列内存。返回十进制字节和十六进制字符串 address (int), length (int) --
write_memory 将字节写入内存。 address (int), bytes (int数组) --
get_registers 获取CPU寄存器值(A、X、Y、SP、PC)、状态标志和十六进制表示。 — —

测试

swift test

LLM提示示例

在注册服务器后,将这些与任何启用MCP的LLM一起使用:

  1. 写入+测试

    • “编写一个6502程序,将两个数字加在$00和$01,并将总和存储在$02。组装它,运行20步,然后读取$00–$02以验证结果。”
  2. 调试

    • “这是我的6502循环,应该递增10美元10倍。它没有。组装并运行它,检查寄存器和10美元,解释问题所在,并修复代码。”
  3. 测试线束

    • “创建一个6502例程,将一个4字节数组(20-23美元)求和为30美元。包括一个小的测试线束,组装并加载它,运行并使用read_memory验证输出。”
  4. 追踪错误

    • “组装此代码,步骤30说明,然后显示PC、A、X、Y和$00-$0F,这样我就可以看到它偏离了轨道的地方。”