Skip to main content
Glama
simen

VICE C64 Emulator MCP Server

by simen

runTo

Execute C64 program until reaching a specific memory address for debugging. Sets temporary breakpoint at target address and continues execution automatically.

Instructions

Run execution until a specific address is reached.

Sets a temporary breakpoint at the target address and continues execution. The breakpoint is automatically deleted when hit.

Use for:

  • "Run until this function" → runTo(functionAddress)

  • "Skip to the end of this loop" → runTo(addressAfterLoop)

Related tools: continue, step, setBreakpoint

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressYesAddress to run to (0x0000-0xFFFF)

Implementation Reference

  • src/index.ts:806-845 (registration)
    Registration of the "runTo" MCP tool, including description, input schema, and handler function.
    server.registerTool(
      "runTo",
      {
        description: `Run execution until a specific address is reached.
    
    Sets a temporary breakpoint at the target address and continues execution.
    The breakpoint is automatically deleted when hit.
    
    Use for:
    - "Run until this function" → runTo(functionAddress)
    - "Skip to the end of this loop" → runTo(addressAfterLoop)
    
    Related tools: continue, step, setBreakpoint`,
        inputSchema: z.object({
          address: z.number().min(0).max(0xffff).describe("Address to run to (0x0000-0xFFFF)"),
        }),
      },
      async (args) => {
        try {
          // Set temporary breakpoint
          const bpId = await client.setBreakpoint(args.address, { temporary: true });
    
          // Continue execution
          await client.continue();
    
          return formatResponse({
            running: true,
            targetAddress: {
              value: args.address,
              hex: `$${args.address.toString(16).padStart(4, "0")}`,
            },
            temporaryBreakpointId: bpId,
            message: `Running to $${args.address.toString(16).padStart(4, "0")}`,
            hint: "Execution will stop when target address is reached. Use status() to check state.",
          });
        } catch (error) {
          return formatError(error as ViceError);
        }
      }
    );
  • Handler function that implements the "runTo" tool logic: sets a temporary breakpoint at the specified address and resumes execution with continue().
    async (args) => {
      try {
        // Set temporary breakpoint
        const bpId = await client.setBreakpoint(args.address, { temporary: true });
    
        // Continue execution
        await client.continue();
    
        return formatResponse({
          running: true,
          targetAddress: {
            value: args.address,
            hex: `$${args.address.toString(16).padStart(4, "0")}`,
          },
          temporaryBreakpointId: bpId,
          message: `Running to $${args.address.toString(16).padStart(4, "0")}`,
          hint: "Execution will stop when target address is reached. Use status() to check state.",
        });
      } catch (error) {
        return formatError(error as ViceError);
      }
    }
  • Zod input schema defining the required 'address' parameter (0-65535) for the "runTo" tool.
    inputSchema: z.object({
      address: z.number().min(0).max(0xffff).describe("Address to run to (0x0000-0xFFFF)"),
    }),

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/simen/vice-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server