@henols/vice-mcp 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/THIRD-PARTY-NOTICES.md +422 -1
- package/anno-bank.ts +171 -0
- package/anno-cli.ts +1736 -163
- package/anno-confidence.ts +2 -2
- package/anno-derive.ts +6 -6
- package/anno-details.ts +4 -4
- package/anno-enum-gen.ts +416 -30
- package/anno-export-asm.ts +1211 -126
- package/anno-graphics.ts +338 -0
- package/anno-hazard-report.ts +1367 -0
- package/anno-import.ts +495 -0
- package/anno-index.ts +8 -8
- package/anno-join.ts +480 -0
- package/anno-memmap-render.ts +22 -21
- package/anno-provenance-ledger.ts +472 -0
- package/anno-regbits-gen.ts +13 -13
- package/anno-register.ts +159 -0
- package/anno-store-export.ts +661 -0
- package/anno-store.ts +635 -124
- package/anno-symbols.ts +7 -7
- package/anno-tools.ts +1169 -16
- package/anno-types.ts +313 -40
- package/backend-detect.mts +124 -312
- package/build.ts +3 -1
- package/capture-predicate.ts +597 -0
- package/channel-lock.ts +349 -0
- package/evid-ingest.ts +217 -0
- package/evid-reconcile.ts +316 -0
- package/host-tool-client.ts +430 -0
- package/incident-record.ts +23 -12
- package/install-resources.ts +29 -13
- package/memmap-lookup.ts +285 -0
- package/package.json +27 -8
- package/prg-image.ts +1 -2
- package/repo-root.ts +87 -3
- package/resources/backend-detect.mjs +98 -236
- package/resources/broker-control.mjs +220 -54
- package/resources/broker-epoch.mjs +7 -8
- package/resources/broker-kill.mjs +36 -31
- package/resources/broker-launch.mjs +511 -374
- package/resources/broker-state.mjs +69 -24
- package/resources/container-guard.mjs +1 -1
- package/resources/ghidra-project.mjs +790 -0
- package/resources/host-tool.mjs +2533 -0
- package/resources/vice-broker.mjs +434 -290
- package/resources/vice-launcher.sh +127 -9
- package/stock-address.ts +1 -1
- package/stock-condition.ts +1 -1
- package/stock-connect.ts +9 -5
- package/stock-derived.ts +29 -37
- package/stock-diagnose.ts +200 -36
- package/stock-dispatch.ts +179 -77
- package/stock-handler.ts +1 -1
- package/stock-paths.ts +18 -14
- package/stock-petscii.ts +1 -1
- package/stock-protocol.ts +1 -1
- package/stock-recycle.ts +83 -2
- package/stock-reproducible-run.ts +811 -0
- package/stock-run-until.ts +100 -1
- package/stock-symbols.ts +4 -4
- package/stock-timing.ts +1 -1
- package/stop-oracle.ts +167 -0
- package/text-capability-probe.ts +660 -0
- package/text-connect.ts +157 -0
- package/text-protocol.ts +810 -0
- package/text-tools.ts +778 -0
- package/textmon-backtrace.ts +385 -0
- package/textmon-cpuhistory.ts +335 -0
- package/textmon-memmap.ts +494 -0
- package/textmon-profile.ts +458 -0
- package/textmon-registers.ts +748 -0
- package/tools-manifest.stock.json +864 -3
- package/vice-broker-client.ts +253 -108
- package/vice-errors.ts +268 -0
- package/vice-proxy.ts +339 -2144
- package/vsf-slice.ts +640 -0
- package/anno-d64.ts +0 -310
- package/capability-registry.ts +0 -390
- package/refresh-manifest.ts +0 -124
- package/tools-manifest.json +0 -1223
- package/vice-probe.ts +0 -278
- package/vice-sync.ts +0 -336
- package/vice.ts +0 -772
package/tools-manifest.json
DELETED
|
@@ -1,1223 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generated_at": "2026-07-31T15:56:00.302Z",
|
|
3
|
-
"endpoint": "http://host.docker.internal:6510/mcp",
|
|
4
|
-
"tools": [
|
|
5
|
-
{
|
|
6
|
-
"name": "initialize",
|
|
7
|
-
"description": "Initialize MCP session",
|
|
8
|
-
"inputSchema": {
|
|
9
|
-
"type": "object",
|
|
10
|
-
"properties": {
|
|
11
|
-
"protocolVersion": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"description": "Protocol version"
|
|
14
|
-
},
|
|
15
|
-
"capabilities": {},
|
|
16
|
-
"clientInfo": {}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "notifications_initialized",
|
|
22
|
-
"description": "Client initialized notification",
|
|
23
|
-
"inputSchema": {
|
|
24
|
-
"type": "object",
|
|
25
|
-
"additionalProperties": false
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"name": "tools_list",
|
|
30
|
-
"description": "List all available tools with schemas",
|
|
31
|
-
"inputSchema": {
|
|
32
|
-
"type": "object",
|
|
33
|
-
"additionalProperties": false
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"name": "tools_call",
|
|
38
|
-
"description": "Call a tool by name",
|
|
39
|
-
"inputSchema": {
|
|
40
|
-
"type": "object",
|
|
41
|
-
"properties": {
|
|
42
|
-
"name": {
|
|
43
|
-
"type": "string",
|
|
44
|
-
"description": "Tool name to call"
|
|
45
|
-
},
|
|
46
|
-
"arguments": {}
|
|
47
|
-
},
|
|
48
|
-
"required": [
|
|
49
|
-
"name"
|
|
50
|
-
]
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"name": "vice_ping",
|
|
55
|
-
"description": "Check if VICE is responding",
|
|
56
|
-
"inputSchema": {
|
|
57
|
-
"type": "object",
|
|
58
|
-
"additionalProperties": false
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"name": "vice_execution_run",
|
|
63
|
-
"description": "Resume execution",
|
|
64
|
-
"inputSchema": {
|
|
65
|
-
"type": "object",
|
|
66
|
-
"additionalProperties": false
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"name": "vice_execution_pause",
|
|
71
|
-
"description": "Pause execution",
|
|
72
|
-
"inputSchema": {
|
|
73
|
-
"type": "object",
|
|
74
|
-
"additionalProperties": false
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"name": "vice_execution_step",
|
|
79
|
-
"description": "Step one or more instructions",
|
|
80
|
-
"inputSchema": {
|
|
81
|
-
"type": "object",
|
|
82
|
-
"properties": {
|
|
83
|
-
"count": {
|
|
84
|
-
"type": "number",
|
|
85
|
-
"description": "Number of instructions to step"
|
|
86
|
-
},
|
|
87
|
-
"stepOver": {
|
|
88
|
-
"type": "boolean",
|
|
89
|
-
"description": "Step over subroutines"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"name": "vice_registers_get",
|
|
96
|
-
"description": "Get CPU registers",
|
|
97
|
-
"inputSchema": {
|
|
98
|
-
"type": "object",
|
|
99
|
-
"additionalProperties": false
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"name": "vice_registers_set",
|
|
104
|
-
"description": "Set CPU register value",
|
|
105
|
-
"inputSchema": {
|
|
106
|
-
"type": "object",
|
|
107
|
-
"properties": {
|
|
108
|
-
"register": {
|
|
109
|
-
"type": "string",
|
|
110
|
-
"description": "Register name: PC|A|X|Y|SP|N|V|B|D|I|Z|C"
|
|
111
|
-
},
|
|
112
|
-
"value": {
|
|
113
|
-
"type": "number",
|
|
114
|
-
"description": "Register value"
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
"required": [
|
|
118
|
-
"register",
|
|
119
|
-
"value"
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"name": "vice_memory_read",
|
|
125
|
-
"description": "Read memory range (with optional bank selection)",
|
|
126
|
-
"inputSchema": {
|
|
127
|
-
"type": "object",
|
|
128
|
-
"properties": {
|
|
129
|
-
"address": {
|
|
130
|
-
"type": "string",
|
|
131
|
-
"description": "Address: number, hex string ($1000), or symbol name"
|
|
132
|
-
},
|
|
133
|
-
"size": {
|
|
134
|
-
"type": "number",
|
|
135
|
-
"description": "Bytes to read (1-65535)"
|
|
136
|
-
},
|
|
137
|
-
"bank": {
|
|
138
|
-
"type": "string",
|
|
139
|
-
"description": "Optional: Memory bank name (e.g., 'ram' to read RAM under ROM). Use vice.memory.banks to list available banks."
|
|
140
|
-
},
|
|
141
|
-
"encoding": {
|
|
142
|
-
"type": "string",
|
|
143
|
-
"description": "Optional: 'array' for legacy per-byte hex strings, or 'hex' for one compact hex string."
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
"required": [
|
|
147
|
-
"address",
|
|
148
|
-
"size"
|
|
149
|
-
]
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
"name": "vice_memory_write",
|
|
154
|
-
"description": "Write to memory",
|
|
155
|
-
"inputSchema": {
|
|
156
|
-
"type": "object",
|
|
157
|
-
"properties": {
|
|
158
|
-
"address": {
|
|
159
|
-
"type": "string",
|
|
160
|
-
"description": "Address: number, hex string ($1000), or symbol name"
|
|
161
|
-
},
|
|
162
|
-
"data": {
|
|
163
|
-
"type": "array",
|
|
164
|
-
"description": "Bytes to write (0-255 each)",
|
|
165
|
-
"items": {
|
|
166
|
-
"type": "number"
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
"required": [
|
|
171
|
-
"address",
|
|
172
|
-
"data"
|
|
173
|
-
]
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
"name": "vice_memory_banks",
|
|
178
|
-
"description": "List available memory banks",
|
|
179
|
-
"inputSchema": {
|
|
180
|
-
"type": "object",
|
|
181
|
-
"additionalProperties": false
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
"name": "vice_memory_search",
|
|
186
|
-
"description": "Search for byte patterns in memory with optional wildcards",
|
|
187
|
-
"inputSchema": {
|
|
188
|
-
"type": "object",
|
|
189
|
-
"properties": {
|
|
190
|
-
"start": {
|
|
191
|
-
"type": "string",
|
|
192
|
-
"description": "Start address: number, hex string ($C000), or symbol name"
|
|
193
|
-
},
|
|
194
|
-
"end": {
|
|
195
|
-
"type": "string",
|
|
196
|
-
"description": "End address: number, hex string ($FFFF), or symbol name"
|
|
197
|
-
},
|
|
198
|
-
"pattern": {
|
|
199
|
-
"type": "array",
|
|
200
|
-
"description": "Byte pattern to find, e.g., [0x4C, 0x00, 0xA0] for JMP $A000",
|
|
201
|
-
"items": {
|
|
202
|
-
"type": "number"
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
"mask": {
|
|
206
|
-
"type": "array",
|
|
207
|
-
"description": "Per-byte mask: 0xFF=exact match, 0x00=wildcard (optional)",
|
|
208
|
-
"items": {
|
|
209
|
-
"type": "number"
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
"max_results": {
|
|
213
|
-
"type": "number",
|
|
214
|
-
"description": "Maximum matches to return (default: 100, max: 10000)"
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
"required": [
|
|
218
|
-
"start",
|
|
219
|
-
"end",
|
|
220
|
-
"pattern"
|
|
221
|
-
]
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
"name": "vice_checkpoint_add",
|
|
226
|
-
"description": "Add checkpoint/breakpoint",
|
|
227
|
-
"inputSchema": {
|
|
228
|
-
"type": "object",
|
|
229
|
-
"properties": {
|
|
230
|
-
"start": {
|
|
231
|
-
"type": "string",
|
|
232
|
-
"description": "Start address: number, hex string ($1000), or symbol name"
|
|
233
|
-
},
|
|
234
|
-
"end": {
|
|
235
|
-
"type": "string",
|
|
236
|
-
"description": "End address: number, hex, or symbol (optional, default=start)"
|
|
237
|
-
},
|
|
238
|
-
"stop": {
|
|
239
|
-
"type": "boolean",
|
|
240
|
-
"description": "Stop execution when hit (default=true)"
|
|
241
|
-
},
|
|
242
|
-
"load": {
|
|
243
|
-
"type": "boolean",
|
|
244
|
-
"description": "Break on memory read (default=false)"
|
|
245
|
-
},
|
|
246
|
-
"store": {
|
|
247
|
-
"type": "boolean",
|
|
248
|
-
"description": "Break on memory write (default=false)"
|
|
249
|
-
},
|
|
250
|
-
"exec": {
|
|
251
|
-
"type": "boolean",
|
|
252
|
-
"description": "Break on execution (default=true)"
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
"required": [
|
|
256
|
-
"start"
|
|
257
|
-
]
|
|
258
|
-
}
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
"name": "vice_checkpoint_delete",
|
|
262
|
-
"description": "Delete checkpoint",
|
|
263
|
-
"inputSchema": {
|
|
264
|
-
"type": "object",
|
|
265
|
-
"properties": {
|
|
266
|
-
"checkpoint_num": {
|
|
267
|
-
"type": "number",
|
|
268
|
-
"description": "Checkpoint number to delete"
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
"required": [
|
|
272
|
-
"checkpoint_num"
|
|
273
|
-
]
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"name": "vice_checkpoint_list",
|
|
278
|
-
"description": "List all checkpoints",
|
|
279
|
-
"inputSchema": {
|
|
280
|
-
"type": "object",
|
|
281
|
-
"additionalProperties": false
|
|
282
|
-
}
|
|
283
|
-
},
|
|
284
|
-
{
|
|
285
|
-
"name": "vice_checkpoint_toggle",
|
|
286
|
-
"description": "Enable/disable checkpoint",
|
|
287
|
-
"inputSchema": {
|
|
288
|
-
"type": "object",
|
|
289
|
-
"properties": {
|
|
290
|
-
"checkpoint_num": {
|
|
291
|
-
"type": "number",
|
|
292
|
-
"description": "Checkpoint number"
|
|
293
|
-
},
|
|
294
|
-
"enabled": {
|
|
295
|
-
"type": "boolean",
|
|
296
|
-
"description": "Enable (true) or disable (false)"
|
|
297
|
-
}
|
|
298
|
-
},
|
|
299
|
-
"required": [
|
|
300
|
-
"checkpoint_num",
|
|
301
|
-
"enabled"
|
|
302
|
-
]
|
|
303
|
-
}
|
|
304
|
-
},
|
|
305
|
-
{
|
|
306
|
-
"name": "vice_checkpoint_set_condition",
|
|
307
|
-
"description": "Set checkpoint condition",
|
|
308
|
-
"inputSchema": {
|
|
309
|
-
"type": "object",
|
|
310
|
-
"properties": {
|
|
311
|
-
"checkpoint_num": {
|
|
312
|
-
"type": "number",
|
|
313
|
-
"description": "Checkpoint number"
|
|
314
|
-
},
|
|
315
|
-
"condition": {
|
|
316
|
-
"type": "string",
|
|
317
|
-
"description": "Condition expression (e.g., 'A == $42')"
|
|
318
|
-
}
|
|
319
|
-
},
|
|
320
|
-
"required": [
|
|
321
|
-
"checkpoint_num",
|
|
322
|
-
"condition"
|
|
323
|
-
]
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
"name": "vice_checkpoint_set_ignore_count",
|
|
328
|
-
"description": "Set checkpoint ignore count",
|
|
329
|
-
"inputSchema": {
|
|
330
|
-
"type": "object",
|
|
331
|
-
"properties": {
|
|
332
|
-
"checkpoint_num": {
|
|
333
|
-
"type": "number",
|
|
334
|
-
"description": "Checkpoint number"
|
|
335
|
-
},
|
|
336
|
-
"count": {
|
|
337
|
-
"type": "number",
|
|
338
|
-
"description": "Number of hits to ignore"
|
|
339
|
-
}
|
|
340
|
-
},
|
|
341
|
-
"required": [
|
|
342
|
-
"checkpoint_num",
|
|
343
|
-
"count"
|
|
344
|
-
]
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
"name": "vice_sprite_get",
|
|
349
|
-
"description": "Get sprite state",
|
|
350
|
-
"inputSchema": {
|
|
351
|
-
"type": "object",
|
|
352
|
-
"properties": {
|
|
353
|
-
"sprite": {
|
|
354
|
-
"type": "number",
|
|
355
|
-
"description": "Sprite number 0-7 (omit to get all sprites)"
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
},
|
|
360
|
-
{
|
|
361
|
-
"name": "vice_sprite_set",
|
|
362
|
-
"description": "Set sprite properties",
|
|
363
|
-
"inputSchema": {
|
|
364
|
-
"type": "object",
|
|
365
|
-
"properties": {
|
|
366
|
-
"sprite": {
|
|
367
|
-
"type": "number",
|
|
368
|
-
"description": "Sprite number 0-7"
|
|
369
|
-
},
|
|
370
|
-
"x": {
|
|
371
|
-
"type": "number",
|
|
372
|
-
"description": "X position 0-511"
|
|
373
|
-
},
|
|
374
|
-
"y": {
|
|
375
|
-
"type": "number",
|
|
376
|
-
"description": "Y position 0-255"
|
|
377
|
-
},
|
|
378
|
-
"enabled": {
|
|
379
|
-
"type": "boolean",
|
|
380
|
-
"description": "Enable sprite"
|
|
381
|
-
},
|
|
382
|
-
"multicolor": {
|
|
383
|
-
"type": "boolean",
|
|
384
|
-
"description": "Multicolor mode"
|
|
385
|
-
},
|
|
386
|
-
"expand_x": {
|
|
387
|
-
"type": "boolean",
|
|
388
|
-
"description": "Double width"
|
|
389
|
-
},
|
|
390
|
-
"expand_y": {
|
|
391
|
-
"type": "boolean",
|
|
392
|
-
"description": "Double height"
|
|
393
|
-
},
|
|
394
|
-
"priority_foreground": {
|
|
395
|
-
"type": "boolean",
|
|
396
|
-
"description": "Draw over background"
|
|
397
|
-
},
|
|
398
|
-
"color": {
|
|
399
|
-
"type": "number",
|
|
400
|
-
"description": "Sprite color 0-15"
|
|
401
|
-
}
|
|
402
|
-
},
|
|
403
|
-
"required": [
|
|
404
|
-
"sprite"
|
|
405
|
-
]
|
|
406
|
-
}
|
|
407
|
-
},
|
|
408
|
-
{
|
|
409
|
-
"name": "vice_vicii_get_state",
|
|
410
|
-
"description": "Get VIC-II internal state",
|
|
411
|
-
"inputSchema": {
|
|
412
|
-
"type": "object",
|
|
413
|
-
"additionalProperties": false
|
|
414
|
-
}
|
|
415
|
-
},
|
|
416
|
-
{
|
|
417
|
-
"name": "vice_vicii_set_state",
|
|
418
|
-
"description": "Set VIC-II registers",
|
|
419
|
-
"inputSchema": {
|
|
420
|
-
"type": "object",
|
|
421
|
-
"properties": {
|
|
422
|
-
"registers": {
|
|
423
|
-
"type": "array",
|
|
424
|
-
"description": "Array of {offset, value} objects to set VIC-II registers (offset 0x00-0x2E)",
|
|
425
|
-
"items": {
|
|
426
|
-
"type": "object"
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
},
|
|
432
|
-
{
|
|
433
|
-
"name": "vice_sid_get_state",
|
|
434
|
-
"description": "Get SID state (voices, filter)",
|
|
435
|
-
"inputSchema": {
|
|
436
|
-
"type": "object",
|
|
437
|
-
"additionalProperties": false
|
|
438
|
-
}
|
|
439
|
-
},
|
|
440
|
-
{
|
|
441
|
-
"name": "vice_sid_set_state",
|
|
442
|
-
"description": "Set SID registers",
|
|
443
|
-
"inputSchema": {
|
|
444
|
-
"type": "object",
|
|
445
|
-
"properties": {
|
|
446
|
-
"registers": {
|
|
447
|
-
"type": "array",
|
|
448
|
-
"description": "Array of {offset, value} objects to set SID registers (offset 0x00-0x1C)",
|
|
449
|
-
"items": {
|
|
450
|
-
"type": "object"
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
},
|
|
456
|
-
{
|
|
457
|
-
"name": "vice_cia_get_state",
|
|
458
|
-
"description": "Get CIA state (timers, ports)",
|
|
459
|
-
"inputSchema": {
|
|
460
|
-
"type": "object",
|
|
461
|
-
"properties": {
|
|
462
|
-
"cia": {
|
|
463
|
-
"type": "number",
|
|
464
|
-
"description": "CIA chip number: 1 or 2 (optional, default returns both)"
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
},
|
|
469
|
-
{
|
|
470
|
-
"name": "vice_cia_set_state",
|
|
471
|
-
"description": "Set CIA registers",
|
|
472
|
-
"inputSchema": {
|
|
473
|
-
"type": "object",
|
|
474
|
-
"properties": {
|
|
475
|
-
"cia1_registers": {
|
|
476
|
-
"type": "array",
|
|
477
|
-
"description": "Array of {offset, value} objects to set CIA1 registers (offset 0x00-0x0F)",
|
|
478
|
-
"items": {
|
|
479
|
-
"type": "object"
|
|
480
|
-
}
|
|
481
|
-
},
|
|
482
|
-
"cia2_registers": {
|
|
483
|
-
"type": "array",
|
|
484
|
-
"description": "Array of {offset, value} objects to set CIA2 registers (offset 0x00-0x0F)",
|
|
485
|
-
"items": {
|
|
486
|
-
"type": "object"
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
},
|
|
492
|
-
{
|
|
493
|
-
"name": "vice_disk_attach",
|
|
494
|
-
"description": "Attach disk image to drive",
|
|
495
|
-
"inputSchema": {
|
|
496
|
-
"type": "object",
|
|
497
|
-
"properties": {
|
|
498
|
-
"unit": {
|
|
499
|
-
"type": "number",
|
|
500
|
-
"description": "Drive unit (8-11)"
|
|
501
|
-
},
|
|
502
|
-
"path": {
|
|
503
|
-
"type": "string",
|
|
504
|
-
"description": "Path to disk image (.d64, .g64, etc)"
|
|
505
|
-
}
|
|
506
|
-
},
|
|
507
|
-
"required": [
|
|
508
|
-
"unit",
|
|
509
|
-
"path"
|
|
510
|
-
]
|
|
511
|
-
}
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
"name": "vice_disk_detach",
|
|
515
|
-
"description": "Detach disk image from drive",
|
|
516
|
-
"inputSchema": {
|
|
517
|
-
"type": "object",
|
|
518
|
-
"properties": {
|
|
519
|
-
"unit": {
|
|
520
|
-
"type": "number",
|
|
521
|
-
"description": "Drive unit (8-11)"
|
|
522
|
-
}
|
|
523
|
-
},
|
|
524
|
-
"required": [
|
|
525
|
-
"unit"
|
|
526
|
-
]
|
|
527
|
-
}
|
|
528
|
-
},
|
|
529
|
-
{
|
|
530
|
-
"name": "vice_disk_read_sector",
|
|
531
|
-
"description": "Read raw sector data",
|
|
532
|
-
"inputSchema": {
|
|
533
|
-
"type": "object",
|
|
534
|
-
"properties": {
|
|
535
|
-
"unit": {
|
|
536
|
-
"type": "number",
|
|
537
|
-
"description": "Drive unit (8-11)"
|
|
538
|
-
},
|
|
539
|
-
"track": {
|
|
540
|
-
"type": "number",
|
|
541
|
-
"description": "Track number (1-42 for D64)"
|
|
542
|
-
},
|
|
543
|
-
"sector": {
|
|
544
|
-
"type": "number",
|
|
545
|
-
"description": "Sector number (0-20 depending on track)"
|
|
546
|
-
}
|
|
547
|
-
},
|
|
548
|
-
"required": [
|
|
549
|
-
"unit",
|
|
550
|
-
"track",
|
|
551
|
-
"sector"
|
|
552
|
-
]
|
|
553
|
-
}
|
|
554
|
-
},
|
|
555
|
-
{
|
|
556
|
-
"name": "vice_autostart",
|
|
557
|
-
"description": "Autostart a PRG or disk image",
|
|
558
|
-
"inputSchema": {
|
|
559
|
-
"type": "object",
|
|
560
|
-
"properties": {
|
|
561
|
-
"path": {
|
|
562
|
-
"type": "string",
|
|
563
|
-
"description": "Path to PRG file or disk image (.d64, .g64, .prg)"
|
|
564
|
-
},
|
|
565
|
-
"program": {
|
|
566
|
-
"type": "string",
|
|
567
|
-
"description": "Program name to load from disk image (optional)"
|
|
568
|
-
},
|
|
569
|
-
"run": {
|
|
570
|
-
"type": "boolean",
|
|
571
|
-
"description": "Run after loading (default: true)"
|
|
572
|
-
},
|
|
573
|
-
"index": {
|
|
574
|
-
"type": "number",
|
|
575
|
-
"description": "Program index on disk, 0-based (default: 0)"
|
|
576
|
-
}
|
|
577
|
-
},
|
|
578
|
-
"required": [
|
|
579
|
-
"path"
|
|
580
|
-
]
|
|
581
|
-
}
|
|
582
|
-
},
|
|
583
|
-
{
|
|
584
|
-
"name": "vice_machine_reset",
|
|
585
|
-
"description": "Reset the machine (soft or hard reset)",
|
|
586
|
-
"inputSchema": {
|
|
587
|
-
"type": "object",
|
|
588
|
-
"properties": {
|
|
589
|
-
"mode": {
|
|
590
|
-
"type": "string",
|
|
591
|
-
"description": "Reset mode: 'soft' (CPU reset, default) or 'hard' (power cycle)"
|
|
592
|
-
},
|
|
593
|
-
"run_after": {
|
|
594
|
-
"type": "boolean",
|
|
595
|
-
"description": "Resume execution after reset (default: true)"
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
},
|
|
600
|
-
{
|
|
601
|
-
"name": "vice_display_screenshot",
|
|
602
|
-
"description": "Capture screenshot (to file or base64)",
|
|
603
|
-
"inputSchema": {
|
|
604
|
-
"type": "object",
|
|
605
|
-
"properties": {
|
|
606
|
-
"path": {
|
|
607
|
-
"type": "string",
|
|
608
|
-
"description": "File path to save screenshot (optional if return_base64=true)"
|
|
609
|
-
},
|
|
610
|
-
"format": {
|
|
611
|
-
"type": "string",
|
|
612
|
-
"description": "Image format: PNG or BMP (default: PNG)"
|
|
613
|
-
},
|
|
614
|
-
"return_base64": {
|
|
615
|
-
"type": "boolean",
|
|
616
|
-
"description": "Return screenshot as base64 data URI (default: false)"
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
},
|
|
621
|
-
{
|
|
622
|
-
"name": "vice_display_get_dimensions",
|
|
623
|
-
"description": "Get display dimensions",
|
|
624
|
-
"inputSchema": {
|
|
625
|
-
"type": "object",
|
|
626
|
-
"additionalProperties": false
|
|
627
|
-
}
|
|
628
|
-
},
|
|
629
|
-
{
|
|
630
|
-
"name": "vice_keyboard_type",
|
|
631
|
-
"description": "Type text (uppercase ASCII displays as uppercase on C64 by default)",
|
|
632
|
-
"inputSchema": {
|
|
633
|
-
"type": "object",
|
|
634
|
-
"properties": {
|
|
635
|
-
"text": {
|
|
636
|
-
"type": "string",
|
|
637
|
-
"description": "Text to type (converts to PETSCII). Use \\n for Return."
|
|
638
|
-
},
|
|
639
|
-
"petscii_upper": {
|
|
640
|
-
"type": "boolean",
|
|
641
|
-
"description": "Default true: uppercase ASCII displays as uppercase on C64. Set false for raw PETSCII (uppercase ASCII maps to graphics)"
|
|
642
|
-
}
|
|
643
|
-
},
|
|
644
|
-
"required": [
|
|
645
|
-
"text"
|
|
646
|
-
]
|
|
647
|
-
}
|
|
648
|
-
},
|
|
649
|
-
{
|
|
650
|
-
"name": "vice_keyboard_petscii",
|
|
651
|
-
"description": "Feed exact PETSCII bytes into the KERNAL keyboard buffer",
|
|
652
|
-
"inputSchema": {
|
|
653
|
-
"type": "object",
|
|
654
|
-
"properties": {
|
|
655
|
-
"data": {
|
|
656
|
-
"type": "array",
|
|
657
|
-
"description": "Exact PETSCII bytes to feed to the KERNAL keyboard buffer (1-255 each; 13 is Return)",
|
|
658
|
-
"items": {
|
|
659
|
-
"type": "number"
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
},
|
|
663
|
-
"required": [
|
|
664
|
-
"data"
|
|
665
|
-
]
|
|
666
|
-
}
|
|
667
|
-
},
|
|
668
|
-
{
|
|
669
|
-
"name": "vice_keyboard_key_press",
|
|
670
|
-
"description": "Press a specific key",
|
|
671
|
-
"inputSchema": {
|
|
672
|
-
"type": "object",
|
|
673
|
-
"properties": {
|
|
674
|
-
"key": {
|
|
675
|
-
"type": "string",
|
|
676
|
-
"description": "Key name or VHK code. Names: Return, Space, BackSpace, Delete, Escape, Tab, Up, Down, Left, Right, Home, End, F1-F8, or single char"
|
|
677
|
-
},
|
|
678
|
-
"modifiers": {
|
|
679
|
-
"type": "array",
|
|
680
|
-
"description": "Optional modifiers: shift, control, ctrl, alt, meta, command, cmd",
|
|
681
|
-
"items": {
|
|
682
|
-
"type": "string"
|
|
683
|
-
}
|
|
684
|
-
},
|
|
685
|
-
"hold_frames": {
|
|
686
|
-
"type": "number",
|
|
687
|
-
"description": "Hold duration in frames (1-300). Key auto-releases after this many frames (~16.7ms each at 60Hz)"
|
|
688
|
-
},
|
|
689
|
-
"hold_ms": {
|
|
690
|
-
"type": "number",
|
|
691
|
-
"description": "Hold duration in milliseconds (1-5000). Key auto-releases after this time. Overrides hold_frames if both specified"
|
|
692
|
-
}
|
|
693
|
-
},
|
|
694
|
-
"required": [
|
|
695
|
-
"key"
|
|
696
|
-
]
|
|
697
|
-
}
|
|
698
|
-
},
|
|
699
|
-
{
|
|
700
|
-
"name": "vice_keyboard_key_release",
|
|
701
|
-
"description": "Release a specific key",
|
|
702
|
-
"inputSchema": {
|
|
703
|
-
"type": "object",
|
|
704
|
-
"properties": {
|
|
705
|
-
"key": {
|
|
706
|
-
"type": "string",
|
|
707
|
-
"description": "Key name or VHK code. Names: Return, Space, BackSpace, Delete, Escape, Tab, Up, Down, Left, Right, Home, End, F1-F8, or single char"
|
|
708
|
-
},
|
|
709
|
-
"modifiers": {
|
|
710
|
-
"type": "array",
|
|
711
|
-
"description": "Optional modifiers: shift, control, ctrl, alt, meta, command, cmd",
|
|
712
|
-
"items": {
|
|
713
|
-
"type": "string"
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
},
|
|
717
|
-
"required": [
|
|
718
|
-
"key"
|
|
719
|
-
]
|
|
720
|
-
}
|
|
721
|
-
},
|
|
722
|
-
{
|
|
723
|
-
"name": "vice_keyboard_restore",
|
|
724
|
-
"description": "Press/release RESTORE key (triggers NMI, not in matrix)",
|
|
725
|
-
"inputSchema": {
|
|
726
|
-
"type": "object",
|
|
727
|
-
"properties": {
|
|
728
|
-
"pressed": {
|
|
729
|
-
"type": "boolean",
|
|
730
|
-
"description": "Key pressed state: true to press (triggers NMI), false to release (default: true)"
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
},
|
|
735
|
-
{
|
|
736
|
-
"name": "vice_joystick_set",
|
|
737
|
-
"description": "Set joystick state",
|
|
738
|
-
"inputSchema": {
|
|
739
|
-
"type": "object",
|
|
740
|
-
"properties": {
|
|
741
|
-
"port": {
|
|
742
|
-
"type": "number",
|
|
743
|
-
"description": "Joystick port 1 or 2 (default=1)"
|
|
744
|
-
},
|
|
745
|
-
"direction": {
|
|
746
|
-
"type": "string",
|
|
747
|
-
"description": "Direction: up, down, left, right, center, or array for diagonals"
|
|
748
|
-
},
|
|
749
|
-
"fire": {
|
|
750
|
-
"type": "boolean",
|
|
751
|
-
"description": "Fire button state (default=false)"
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
},
|
|
756
|
-
{
|
|
757
|
-
"name": "vice_joystick_tap",
|
|
758
|
-
"description": "Tap joystick direction/fire for a fixed number of frames, then center",
|
|
759
|
-
"inputSchema": {
|
|
760
|
-
"type": "object",
|
|
761
|
-
"properties": {
|
|
762
|
-
"port": {
|
|
763
|
-
"type": "number",
|
|
764
|
-
"description": "Joystick port 1 or 2 (default=1)"
|
|
765
|
-
},
|
|
766
|
-
"direction": {
|
|
767
|
-
"type": "string",
|
|
768
|
-
"description": "Direction: up, down, left, right, center, or array for diagonals"
|
|
769
|
-
},
|
|
770
|
-
"fire": {
|
|
771
|
-
"type": "boolean",
|
|
772
|
-
"description": "Fire button state (default=false)"
|
|
773
|
-
},
|
|
774
|
-
"duration_frames": {
|
|
775
|
-
"type": "number",
|
|
776
|
-
"description": "Tap duration in frames (1-300, default=3)"
|
|
777
|
-
},
|
|
778
|
-
"duration_ms": {
|
|
779
|
-
"type": "number",
|
|
780
|
-
"description": "Tap duration in milliseconds (1-5000). Overrides duration_frames if both specified"
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
},
|
|
785
|
-
{
|
|
786
|
-
"name": "vice_disassemble",
|
|
787
|
-
"description": "Disassemble memory to 6502 instructions",
|
|
788
|
-
"inputSchema": {
|
|
789
|
-
"type": "object",
|
|
790
|
-
"properties": {
|
|
791
|
-
"address": {
|
|
792
|
-
"type": "string",
|
|
793
|
-
"description": "Start address: number, hex string ($1000), or symbol name"
|
|
794
|
-
},
|
|
795
|
-
"count": {
|
|
796
|
-
"type": "number",
|
|
797
|
-
"description": "Number of instructions to disassemble (default: 10, max: 100)"
|
|
798
|
-
},
|
|
799
|
-
"show_symbols": {
|
|
800
|
-
"type": "boolean",
|
|
801
|
-
"description": "Show symbol names in output (default: true)"
|
|
802
|
-
}
|
|
803
|
-
},
|
|
804
|
-
"required": [
|
|
805
|
-
"address"
|
|
806
|
-
]
|
|
807
|
-
}
|
|
808
|
-
},
|
|
809
|
-
{
|
|
810
|
-
"name": "vice_symbols_load",
|
|
811
|
-
"description": "Load symbol/label file (VICE, KickAssembler, simple formats)",
|
|
812
|
-
"inputSchema": {
|
|
813
|
-
"type": "object",
|
|
814
|
-
"properties": {
|
|
815
|
-
"path": {
|
|
816
|
-
"type": "string",
|
|
817
|
-
"description": "Path to symbol file (.sym, .lbl)"
|
|
818
|
-
},
|
|
819
|
-
"format": {
|
|
820
|
-
"type": "string",
|
|
821
|
-
"description": "Format: 'auto' (default), 'kickasm', 'vice', or 'simple'. Auto-detects KickAssembler (.label/.namespace) vs VICE (al C:xxxx) format"
|
|
822
|
-
}
|
|
823
|
-
},
|
|
824
|
-
"required": [
|
|
825
|
-
"path"
|
|
826
|
-
]
|
|
827
|
-
}
|
|
828
|
-
},
|
|
829
|
-
{
|
|
830
|
-
"name": "vice_symbols_lookup",
|
|
831
|
-
"description": "Lookup symbol by name or address",
|
|
832
|
-
"inputSchema": {
|
|
833
|
-
"type": "object",
|
|
834
|
-
"properties": {
|
|
835
|
-
"name": {
|
|
836
|
-
"type": "string",
|
|
837
|
-
"description": "Symbol name to look up (returns address)"
|
|
838
|
-
},
|
|
839
|
-
"address": {
|
|
840
|
-
"type": "number",
|
|
841
|
-
"description": "Address to look up (returns symbol name)"
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
},
|
|
846
|
-
{
|
|
847
|
-
"name": "vice_watch_add",
|
|
848
|
-
"description": "Add memory watchpoint with optional condition (shorthand for checkpoint with store/load)",
|
|
849
|
-
"inputSchema": {
|
|
850
|
-
"type": "object",
|
|
851
|
-
"properties": {
|
|
852
|
-
"address": {
|
|
853
|
-
"type": "string",
|
|
854
|
-
"description": "Address: number, hex string ($1000), or symbol name"
|
|
855
|
-
},
|
|
856
|
-
"size": {
|
|
857
|
-
"type": "number",
|
|
858
|
-
"description": "Number of bytes to watch (default: 1)"
|
|
859
|
-
},
|
|
860
|
-
"type": {
|
|
861
|
-
"type": "string",
|
|
862
|
-
"description": "Watch type: 'read', 'write', or 'both' (default: 'write')"
|
|
863
|
-
},
|
|
864
|
-
"condition": {
|
|
865
|
-
"type": "string",
|
|
866
|
-
"description": "Condition expression for conditional watchpoint. Supported: 'A == $xx', 'X == $xx', 'Y == $xx', 'PC == $xxxx', 'SP == $xx'. For store watches, condition is evaluated after the store completes."
|
|
867
|
-
}
|
|
868
|
-
},
|
|
869
|
-
"required": [
|
|
870
|
-
"address"
|
|
871
|
-
]
|
|
872
|
-
}
|
|
873
|
-
},
|
|
874
|
-
{
|
|
875
|
-
"name": "vice_backtrace",
|
|
876
|
-
"description": "Show call stack (JSR return addresses)",
|
|
877
|
-
"inputSchema": {
|
|
878
|
-
"type": "object",
|
|
879
|
-
"properties": {
|
|
880
|
-
"depth": {
|
|
881
|
-
"type": "number",
|
|
882
|
-
"description": "Max stack frames to show (default: 16, max: 64)"
|
|
883
|
-
}
|
|
884
|
-
}
|
|
885
|
-
}
|
|
886
|
-
},
|
|
887
|
-
{
|
|
888
|
-
"name": "vice_run_until",
|
|
889
|
-
"description": "Run until address or for N cycles (with timeout)",
|
|
890
|
-
"inputSchema": {
|
|
891
|
-
"type": "object",
|
|
892
|
-
"properties": {
|
|
893
|
-
"address": {
|
|
894
|
-
"type": "string",
|
|
895
|
-
"description": "Target address: number, hex, or symbol (stops when PC reaches this)"
|
|
896
|
-
},
|
|
897
|
-
"cycles": {
|
|
898
|
-
"type": "number",
|
|
899
|
-
"description": "Max cycles to run (timeout, not yet implemented)"
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
},
|
|
904
|
-
{
|
|
905
|
-
"name": "vice_keyboard_matrix",
|
|
906
|
-
"description": "Direct keyboard matrix control (for games that scan keyboard directly)",
|
|
907
|
-
"inputSchema": {
|
|
908
|
-
"type": "object",
|
|
909
|
-
"properties": {
|
|
910
|
-
"key": {
|
|
911
|
-
"type": "string",
|
|
912
|
-
"description": "Key name: A-Z, 0-9, SPACE, RETURN, F1, F3, F5, F7, UP, DOWN, LEFT, RIGHT, STOP"
|
|
913
|
-
},
|
|
914
|
-
"row": {
|
|
915
|
-
"type": "number",
|
|
916
|
-
"description": "Keyboard matrix row (0-7, alternative to key name)"
|
|
917
|
-
},
|
|
918
|
-
"col": {
|
|
919
|
-
"type": "number",
|
|
920
|
-
"description": "Keyboard matrix column (0-7, alternative to key name)"
|
|
921
|
-
},
|
|
922
|
-
"pressed": {
|
|
923
|
-
"type": "boolean",
|
|
924
|
-
"description": "Key pressed state (default: true)"
|
|
925
|
-
},
|
|
926
|
-
"hold_frames": {
|
|
927
|
-
"type": "number",
|
|
928
|
-
"description": "Hold duration in frames (1-300). Key auto-releases after this many frames (~16.7ms each at 60Hz)"
|
|
929
|
-
},
|
|
930
|
-
"hold_ms": {
|
|
931
|
-
"type": "number",
|
|
932
|
-
"description": "Hold duration in milliseconds (1-5000). Key auto-releases after this time. Overrides hold_frames if both specified"
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
}
|
|
936
|
-
},
|
|
937
|
-
{
|
|
938
|
-
"name": "vice_keyboard_chord",
|
|
939
|
-
"description": "Press multiple C64 keyboard matrix keys together for a fixed number of frames",
|
|
940
|
-
"inputSchema": {
|
|
941
|
-
"type": "object",
|
|
942
|
-
"properties": {
|
|
943
|
-
"keys": {
|
|
944
|
-
"type": "array",
|
|
945
|
-
"description": "Keys to press simultaneously. Entries may be key names or {row,col} objects.",
|
|
946
|
-
"items": {
|
|
947
|
-
"type": "string"
|
|
948
|
-
}
|
|
949
|
-
},
|
|
950
|
-
"hold_frames": {
|
|
951
|
-
"type": "number",
|
|
952
|
-
"description": "Hold duration in frames (1-300, default=3)"
|
|
953
|
-
},
|
|
954
|
-
"hold_ms": {
|
|
955
|
-
"type": "number",
|
|
956
|
-
"description": "Hold duration in milliseconds (1-5000). Overrides hold_frames if both specified"
|
|
957
|
-
}
|
|
958
|
-
},
|
|
959
|
-
"required": [
|
|
960
|
-
"keys"
|
|
961
|
-
]
|
|
962
|
-
}
|
|
963
|
-
},
|
|
964
|
-
{
|
|
965
|
-
"name": "vice_snapshot_save",
|
|
966
|
-
"description": "Save complete emulator state to a named snapshot. Use this to capture a debugging checkpoint that can be restored later with snapshot.load. Snapshots are stored in ~/.config/vice/mcp_snapshots/ with JSON metadata.",
|
|
967
|
-
"inputSchema": {
|
|
968
|
-
"type": "object",
|
|
969
|
-
"properties": {
|
|
970
|
-
"name": {
|
|
971
|
-
"type": "string",
|
|
972
|
-
"description": "Unique name for this snapshot (alphanumeric, underscore, hyphen only). Choose descriptive names like 'before_crash' or 'level3_boss_fight'."
|
|
973
|
-
},
|
|
974
|
-
"description": {
|
|
975
|
-
"type": "string",
|
|
976
|
-
"description": "Human-readable description of what state this snapshot captures. Be specific: 'Player at level 3, about to trigger sprite collision bug'."
|
|
977
|
-
},
|
|
978
|
-
"include_roms": {
|
|
979
|
-
"type": "boolean",
|
|
980
|
-
"description": "Include ROM images in snapshot (default: false). Enable for full reproducibility, disable for smaller files."
|
|
981
|
-
},
|
|
982
|
-
"include_disks": {
|
|
983
|
-
"type": "boolean",
|
|
984
|
-
"description": "Include disk drive state in snapshot (default: false). Enable if disk contents are relevant to the bug being debugged."
|
|
985
|
-
}
|
|
986
|
-
},
|
|
987
|
-
"required": [
|
|
988
|
-
"name"
|
|
989
|
-
]
|
|
990
|
-
}
|
|
991
|
-
},
|
|
992
|
-
{
|
|
993
|
-
"name": "vice_snapshot_load",
|
|
994
|
-
"description": "Restore emulator state from a previously saved snapshot. Use this to return to a known debugging checkpoint without re-running setup steps. The emulator will be in the exact state it was when the snapshot was saved.",
|
|
995
|
-
"inputSchema": {
|
|
996
|
-
"type": "object",
|
|
997
|
-
"properties": {
|
|
998
|
-
"name": {
|
|
999
|
-
"type": "string",
|
|
1000
|
-
"description": "Name of the snapshot to load. Must match the name previously given to snapshot.save."
|
|
1001
|
-
}
|
|
1002
|
-
},
|
|
1003
|
-
"required": [
|
|
1004
|
-
"name"
|
|
1005
|
-
]
|
|
1006
|
-
}
|
|
1007
|
-
},
|
|
1008
|
-
{
|
|
1009
|
-
"name": "vice_cycles_stopwatch",
|
|
1010
|
-
"description": "Measure elapsed CPU cycles for timing-critical code analysis. Use 'reset' to start timing, 'read' to get elapsed cycles, or 'reset_and_read' for atomic read-and-reset. Ideal for measuring raster routine timing.",
|
|
1011
|
-
"inputSchema": {
|
|
1012
|
-
"type": "object",
|
|
1013
|
-
"properties": {
|
|
1014
|
-
"action": {
|
|
1015
|
-
"type": "string",
|
|
1016
|
-
"description": "Action to perform: 'reset' (start timing), 'read' (get elapsed cycles), or 'reset_and_read' (atomic read and reset)",
|
|
1017
|
-
"enum": [
|
|
1018
|
-
"reset",
|
|
1019
|
-
"read",
|
|
1020
|
-
"reset_and_read"
|
|
1021
|
-
]
|
|
1022
|
-
}
|
|
1023
|
-
},
|
|
1024
|
-
"required": [
|
|
1025
|
-
"action"
|
|
1026
|
-
]
|
|
1027
|
-
}
|
|
1028
|
-
},
|
|
1029
|
-
{
|
|
1030
|
-
"name": "vice_memory_fill",
|
|
1031
|
-
"description": "Fill memory range with a repeating byte pattern. Useful for clearing memory, creating NOP sleds, or setting up test conditions. The pattern repeats to fill the entire range from start to end (inclusive).",
|
|
1032
|
-
"inputSchema": {
|
|
1033
|
-
"type": "object",
|
|
1034
|
-
"properties": {
|
|
1035
|
-
"start": {
|
|
1036
|
-
"type": "string",
|
|
1037
|
-
"description": "Start address: number, hex string ($A000), or symbol name"
|
|
1038
|
-
},
|
|
1039
|
-
"end": {
|
|
1040
|
-
"type": "string",
|
|
1041
|
-
"description": "End address (inclusive): number, hex string ($DFFF), or symbol name"
|
|
1042
|
-
},
|
|
1043
|
-
"pattern": {
|
|
1044
|
-
"type": "array",
|
|
1045
|
-
"description": "Byte pattern to repeat, e.g., [0] for zero-fill, [0xAA, 0x55] for alternating",
|
|
1046
|
-
"items": {
|
|
1047
|
-
"type": "number"
|
|
1048
|
-
}
|
|
1049
|
-
}
|
|
1050
|
-
},
|
|
1051
|
-
"required": [
|
|
1052
|
-
"start",
|
|
1053
|
-
"end",
|
|
1054
|
-
"pattern"
|
|
1055
|
-
]
|
|
1056
|
-
}
|
|
1057
|
-
},
|
|
1058
|
-
{
|
|
1059
|
-
"name": "vice_memory_compare",
|
|
1060
|
-
"description": "Compare two memory ranges or compare current memory against a snapshot. Use mode='ranges' to compare two live memory ranges, or mode='snapshot' to compare against a previously saved state. Returns list of differences with addresses and values.",
|
|
1061
|
-
"inputSchema": {
|
|
1062
|
-
"type": "object",
|
|
1063
|
-
"properties": {
|
|
1064
|
-
"mode": {
|
|
1065
|
-
"type": "string",
|
|
1066
|
-
"description": "Comparison mode: 'ranges' to compare two memory ranges, 'snapshot' to compare against saved state"
|
|
1067
|
-
},
|
|
1068
|
-
"range1_start": {
|
|
1069
|
-
"type": "string",
|
|
1070
|
-
"description": "Start address of first range (for mode='ranges'): number, hex string ($1000), or symbol"
|
|
1071
|
-
},
|
|
1072
|
-
"range1_end": {
|
|
1073
|
-
"type": "string",
|
|
1074
|
-
"description": "End address of first range (for mode='ranges'): number, hex string ($1FFF), or symbol"
|
|
1075
|
-
},
|
|
1076
|
-
"range2_start": {
|
|
1077
|
-
"type": "string",
|
|
1078
|
-
"description": "Start address of second range (for mode='ranges'): number, hex string ($2000), or symbol"
|
|
1079
|
-
},
|
|
1080
|
-
"snapshot_name": {
|
|
1081
|
-
"type": "string",
|
|
1082
|
-
"description": "Name of snapshot to compare against (for mode='snapshot')"
|
|
1083
|
-
},
|
|
1084
|
-
"start": {
|
|
1085
|
-
"type": "string",
|
|
1086
|
-
"description": "Start address to compare (for mode='snapshot'): number, hex string ($A000), or symbol"
|
|
1087
|
-
},
|
|
1088
|
-
"end": {
|
|
1089
|
-
"type": "string",
|
|
1090
|
-
"description": "End address to compare (for mode='snapshot'): number, hex string ($BFFF), or symbol"
|
|
1091
|
-
},
|
|
1092
|
-
"max_differences": {
|
|
1093
|
-
"type": "number",
|
|
1094
|
-
"description": "Maximum differences to return (default: 100, max: 10000)"
|
|
1095
|
-
}
|
|
1096
|
-
},
|
|
1097
|
-
"required": [
|
|
1098
|
-
"mode"
|
|
1099
|
-
]
|
|
1100
|
-
}
|
|
1101
|
-
},
|
|
1102
|
-
{
|
|
1103
|
-
"name": "vice_checkpoint_group_create",
|
|
1104
|
-
"description": "Create a named checkpoint group for batch operations. Groups allow you to enable/disable multiple breakpoints at once. Optionally include initial checkpoint_ids array.",
|
|
1105
|
-
"inputSchema": {
|
|
1106
|
-
"type": "object",
|
|
1107
|
-
"properties": {
|
|
1108
|
-
"name": {
|
|
1109
|
-
"type": "string",
|
|
1110
|
-
"description": "Group name (unique identifier)"
|
|
1111
|
-
},
|
|
1112
|
-
"checkpoint_ids": {
|
|
1113
|
-
"type": "array",
|
|
1114
|
-
"description": "Optional array of checkpoint IDs to include in the group",
|
|
1115
|
-
"items": {
|
|
1116
|
-
"type": "number"
|
|
1117
|
-
}
|
|
1118
|
-
}
|
|
1119
|
-
},
|
|
1120
|
-
"required": [
|
|
1121
|
-
"name"
|
|
1122
|
-
]
|
|
1123
|
-
}
|
|
1124
|
-
},
|
|
1125
|
-
{
|
|
1126
|
-
"name": "vice_checkpoint_group_add",
|
|
1127
|
-
"description": "Add checkpoints to an existing group. Use this to grow a group after creation.",
|
|
1128
|
-
"inputSchema": {
|
|
1129
|
-
"type": "object",
|
|
1130
|
-
"properties": {
|
|
1131
|
-
"group": {
|
|
1132
|
-
"type": "string",
|
|
1133
|
-
"description": "Group name to add checkpoints to"
|
|
1134
|
-
},
|
|
1135
|
-
"checkpoint_ids": {
|
|
1136
|
-
"type": "array",
|
|
1137
|
-
"description": "Array of checkpoint IDs to add to the group",
|
|
1138
|
-
"items": {
|
|
1139
|
-
"type": "number"
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
},
|
|
1143
|
-
"required": [
|
|
1144
|
-
"group",
|
|
1145
|
-
"checkpoint_ids"
|
|
1146
|
-
]
|
|
1147
|
-
}
|
|
1148
|
-
},
|
|
1149
|
-
{
|
|
1150
|
-
"name": "vice_checkpoint_group_toggle",
|
|
1151
|
-
"description": "Enable or disable all checkpoints in a group. Use enabled=true to enable, enabled=false to disable.",
|
|
1152
|
-
"inputSchema": {
|
|
1153
|
-
"type": "object",
|
|
1154
|
-
"properties": {
|
|
1155
|
-
"group": {
|
|
1156
|
-
"type": "string",
|
|
1157
|
-
"description": "Group name"
|
|
1158
|
-
},
|
|
1159
|
-
"enabled": {
|
|
1160
|
-
"type": "boolean",
|
|
1161
|
-
"description": "Enable (true) or disable (false) all checkpoints in the group"
|
|
1162
|
-
}
|
|
1163
|
-
},
|
|
1164
|
-
"required": [
|
|
1165
|
-
"group",
|
|
1166
|
-
"enabled"
|
|
1167
|
-
]
|
|
1168
|
-
}
|
|
1169
|
-
},
|
|
1170
|
-
{
|
|
1171
|
-
"name": "vice_checkpoint_group_list",
|
|
1172
|
-
"description": "List all checkpoint groups with their member counts. Returns group names, checkpoint IDs, and enabled/disabled counts.",
|
|
1173
|
-
"inputSchema": {
|
|
1174
|
-
"type": "object",
|
|
1175
|
-
"additionalProperties": false
|
|
1176
|
-
}
|
|
1177
|
-
},
|
|
1178
|
-
{
|
|
1179
|
-
"name": "vice_machine_config_get",
|
|
1180
|
-
"description": "Get current machine configuration including chips, memory map, and resources. Returns machine type, available chips, memory layout, and configurable resources.",
|
|
1181
|
-
"inputSchema": {
|
|
1182
|
-
"type": "object",
|
|
1183
|
-
"additionalProperties": false
|
|
1184
|
-
}
|
|
1185
|
-
},
|
|
1186
|
-
{
|
|
1187
|
-
"name": "vice_machine_config_set",
|
|
1188
|
-
"description": "Set machine configuration resources (WarpMode, Speed, video standard, SID model, CIA model, etc). WarpMode (0/1) disables speed limiting for fast execution. Speed (1-10000, 0=unlimited) sets CPU speed percentage. Only whitelisted resources can be changed. Returns the new configuration.",
|
|
1189
|
-
"inputSchema": {
|
|
1190
|
-
"type": "object",
|
|
1191
|
-
"properties": {
|
|
1192
|
-
"resources": {
|
|
1193
|
-
"type": "string",
|
|
1194
|
-
"description": "Object of resource name/value pairs (e.g. {\"MachineVideoStandard\": 1, \"SidModel\": 0})"
|
|
1195
|
-
}
|
|
1196
|
-
},
|
|
1197
|
-
"required": [
|
|
1198
|
-
"resources"
|
|
1199
|
-
]
|
|
1200
|
-
}
|
|
1201
|
-
},
|
|
1202
|
-
{
|
|
1203
|
-
"name": "vice_sprite_inspect",
|
|
1204
|
-
"description": "Visual representation of sprite bitmap data. Reads sprite pointer, data, and multicolor settings to render ASCII art. ASCII Legend: '.'=transparent(00), '#'=sprite color(10), '@'=multi1(01), '%'=multi2(11).",
|
|
1205
|
-
"inputSchema": {
|
|
1206
|
-
"type": "object",
|
|
1207
|
-
"properties": {
|
|
1208
|
-
"sprite_number": {
|
|
1209
|
-
"type": "number",
|
|
1210
|
-
"description": "Sprite number 0-7 to inspect"
|
|
1211
|
-
},
|
|
1212
|
-
"format": {
|
|
1213
|
-
"type": "string",
|
|
1214
|
-
"description": "Output format: 'ascii' (default), 'binary', or 'png_base64'"
|
|
1215
|
-
}
|
|
1216
|
-
},
|
|
1217
|
-
"required": [
|
|
1218
|
-
"sprite_number"
|
|
1219
|
-
]
|
|
1220
|
-
}
|
|
1221
|
-
}
|
|
1222
|
-
]
|
|
1223
|
-
}
|