c64bridge 0.9.3 → 1.0.0
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/AGENTS.md +19 -3
- package/README.md +190 -148
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +127 -5
- package/dist/config.js +12 -8
- package/dist/device.js +75 -45
- package/dist/mcp-server.js +11 -3
- package/dist/platform.js +13 -2
- package/dist/tools/audio.js +1 -1
- package/dist/tools/developer.js +6 -6
- package/dist/tools/graphics.js +4 -4
- package/dist/tools/input.js +129 -12
- package/dist/tools/machineControl.js +85 -6
- package/dist/tools/memory.js +1 -1
- package/dist/tools/meta/index.js +1 -1
- package/dist/tools/programRunners.js +5 -5
- package/dist/tools/rag.js +1 -1
- package/dist/tools/registry/batch.js +1 -1
- package/dist/tools/registry/config.js +5 -5
- package/dist/tools/registry/disk.js +2 -2
- package/dist/tools/registry/drive.js +2 -2
- package/dist/tools/registry/graphics.js +2 -2
- package/dist/tools/registry/memory.js +2 -2
- package/dist/tools/registry/platform.js +7 -5
- package/dist/tools/registry/program.js +5 -5
- package/dist/tools/registry/rag.js +1 -1
- package/dist/tools/registry/sound.js +4 -4
- package/dist/tools/registry/system.js +13 -3
- package/dist/tools/storage.js +1 -1
- package/doc/c64u/c64-openapi.yaml +1130 -774
- package/doc/u2/u2-openapi.yaml +1192 -0
- package/generated/c64/index.js +142 -9
- package/generated/openapi/c64u/index.js +1117 -0
- package/generated/openapi/u2/index.js +929 -0
- package/mcp/schemas/c64_graphics.schema.json +3 -3
- package/mcp/schemas/c64_input.schema.json +247 -6
- package/mcp/schemas/c64_memory.schema.json +3 -3
- package/mcp/schemas/c64_program.schema.json +3 -3
- package/mcp/schemas/c64_select_backend.schema.json +2 -0
- package/mcp/schemas/c64_system.schema.json +41 -1
- package/mcp/server.json +1 -1
- package/mcp/tools.json +382 -41
- package/mcp.json +14 -2
- package/package.json +4 -2
- package/scripts/mockC64Server.mjs +40 -0
- package/scripts/prepare-release.mjs +13 -2
- package/scripts/update-readme.ts +18 -30
- package/server.json +3 -3
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Your AI Command Bridge for the Commodore 64.
|
|
|
18
18
|
|
|
19
19
|
C64 Bridge is an MCP server for controlling and working with a Commodore 64 from an AI client.
|
|
20
20
|
|
|
21
|
-
It lets you run programs, read and write memory, render graphics, and play sound on a
|
|
21
|
+
It lets you run programs, read and write memory, render graphics, and play sound on a [C64 Ultimate](https://www.commodore.net/), [Ultimate 64](https://ultimate64.com/), or U2-family cartridge. You can also switch to a [VICE](https://vice-emu.sourceforge.io/) emulator session, so one MCP conversation can span hardware and emulation.
|
|
22
22
|
|
|
23
23
|
It is built on the official TypeScript `@modelcontextprotocol/sdk` and supports both `stdio` for local AI integration and an optional HTTP bridge for manual inspection.
|
|
24
24
|
|
|
@@ -39,6 +39,7 @@ C64 Bridge is listed in the [Official MCP Registry](https://registry.modelcontex
|
|
|
39
39
|
- [Configuration File Order](#configuration-file-order)
|
|
40
40
|
- [Configuration Merge Rules](#configuration-merge-rules)
|
|
41
41
|
- [Backend Configuration: C64 Ultimate](#backend-configuration-c64-ultimate)
|
|
42
|
+
- [Backend Configuration: U2-family](#backend-configuration-u2-family)
|
|
42
43
|
- [Backend Configuration: VICE](#backend-configuration-vice)
|
|
43
44
|
- [VICE Window Modes](#vice-window-modes)
|
|
44
45
|
- [Recommended VICE Configurations](#recommended-vice-configurations)
|
|
@@ -90,7 +91,7 @@ C64 Bridge gives an AI agent one place to drive program execution, memory access
|
|
|
90
91
|
The core workflow is simple:
|
|
91
92
|
|
|
92
93
|
1. Start the MCP server.
|
|
93
|
-
2. Point it at
|
|
94
|
+
2. Point it at C64U/U64 hardware, a U2-family cartridge, VICE, or any configured combination.
|
|
94
95
|
3. Let the client call grouped MCP tools such as `c64_program`, `c64_memory`, `c64_graphics`, and `c64_sound`.
|
|
95
96
|
4. Switch backends at runtime with `c64_select_backend` when both are configured.
|
|
96
97
|
|
|
@@ -101,7 +102,7 @@ The core workflow is simple:
|
|
|
101
102
|
- System integration for drives, files, printers, and task orchestration
|
|
102
103
|
- SID music tools for playback, composition, generation, and verification
|
|
103
104
|
- Built-in knowledge resources and prompts for safer LLM workflows
|
|
104
|
-
- Mixed runtime support for
|
|
105
|
+
- Mixed runtime support for `c64u` (C64U/U64), `u2` (U2/U2+/U2+L), and `vice`
|
|
105
106
|
|
|
106
107
|
## Quick Start
|
|
107
108
|
|
|
@@ -109,7 +110,7 @@ If you want the shortest path, do these four things:
|
|
|
109
110
|
|
|
110
111
|
1. Install Node.js 24+ and npm.
|
|
111
112
|
2. Start the server.
|
|
112
|
-
3. Add backend configuration for
|
|
113
|
+
3. Add backend configuration for C64U/U64, U2-family, VICE, or any combination.
|
|
113
114
|
4. Connect from VS Code or another MCP client.
|
|
114
115
|
|
|
115
116
|
### 1. Install Node.js 24+ and npm
|
|
@@ -187,11 +188,11 @@ On startup, the server probes the selected target, performs connectivity checks,
|
|
|
187
188
|
|
|
188
189
|
### 3. Add Backend Configuration
|
|
189
190
|
|
|
190
|
-
The server can run against:
|
|
191
|
+
The server can run against one or more of:
|
|
191
192
|
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
193
|
+
- C64U/U64 hardware (`c64u`)
|
|
194
|
+
- U2, U2+, or U2+L (`u2`)
|
|
195
|
+
- VICE (`vice`)
|
|
195
196
|
|
|
196
197
|
The detailed lookup order, merge rules, backend examples, and override model are in the [Configuration](#configuration) section below.
|
|
197
198
|
|
|
@@ -204,7 +205,7 @@ C64 Bridge ships a single canonical `stdio` entry point that every MCP client us
|
|
|
204
205
|
- **Cursor, Visual Studio, VS Code Insiders** — use the install badges at the top of this README.
|
|
205
206
|
- **Any other MCP client** — point it at the same `stdio` server, with the environment variables documented in [Runtime Environment Variable Reference](#runtime-environment-variable-reference) and the registry manifest in [mcp.json](./mcp.json).
|
|
206
207
|
|
|
207
|
-
The startup command is the same across clients: `npx -y c64bridge@latest` for the published package, or `node scripts/start.mjs` from a local checkout.
|
|
208
|
+
The startup command is the same across clients: `npx -y c64bridge@latest` for the published package, or `node scripts/start.mjs` from a local checkout. Select `c64u`, `u2`, or `vice` in the shared [Configuration](#configuration); clients only need the command.
|
|
208
209
|
|
|
209
210
|
## Configuration
|
|
210
211
|
|
|
@@ -220,9 +221,8 @@ The server reads configuration in this order:
|
|
|
220
221
|
|
|
221
222
|
Configuration is merged per backend section while scanning those files in order.
|
|
222
223
|
|
|
223
|
-
- The first file that contains
|
|
224
|
-
-
|
|
225
|
-
- This allows a project-local `.c64bridge.json` to define `c64u` while `~/.c64bridge.json` defines `vice`, with both backends available at runtime.
|
|
224
|
+
- The first file that contains each backend section (`c64u`, `u2`, or `vice`) supplies that backend's configuration.
|
|
225
|
+
- This allows a project-local `.c64bridge.json` to define `c64u` while `~/.c64bridge.json` defines `u2` or `vice`.
|
|
226
226
|
|
|
227
227
|
### Backend Configuration: C64 Ultimate
|
|
228
228
|
|
|
@@ -242,6 +242,32 @@ Use this for a C64 Ultimate or Ultimate 64:
|
|
|
242
242
|
- `networkPassword` is only needed when you enabled a password in the C64 Ultimate network settings.
|
|
243
243
|
- `C64U_HOST`, `C64U_PORT`, and `C64U_PASSWORD` override the configured host, port, and network password.
|
|
244
244
|
|
|
245
|
+
### Firmware Requirements for Native Input and Menu Screens
|
|
246
|
+
|
|
247
|
+
The following operations require recently added Ultimate REST endpoints. C64 Bridge detects or explains unavailable endpoints without exposing a raw firmware error.
|
|
248
|
+
|
|
249
|
+
Before choosing an endpoint-dependent operation, read `c64://platform/status`. It probes `machine:input` safely and reports whether it is available. When native input is unavailable, use `key` or `write_text` for ordinary C64 input instead of physical matrix events. `machine:menu_screen` can only be confirmed after an Ultimate menu is visible; its tool returns fallback guidance rather than a transport error when no matrix can be read.
|
|
250
|
+
|
|
251
|
+
- `c64_input` `keyboard`, `release_all`, and `state`, plus hardware `joystick`, use `machine:input`. They require a C64U firmware version that provides this endpoint, or U64 firmware 3.15 or later. `machine:input` is not available on U2-family cartridges.
|
|
252
|
+
- `c64_system` `read_menu_screen` uses `machine:menu_screen`; it requires a C64U firmware version that provides this endpoint, or U64/U2 firmware 3.15 or later.
|
|
253
|
+
- On C64U/U64, `c64_system` `power_cycle` verifies Tool Menu navigation with `machine:menu_screen`, so it has the same firmware requirement. U2-family `power_cycle` uses REST reboot instead.
|
|
254
|
+
|
|
255
|
+
### Backend Configuration: U2-family
|
|
256
|
+
|
|
257
|
+
Use this profile for U2, U2+, and U2+L cartridges:
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"u2": {
|
|
262
|
+
"host": "u2",
|
|
263
|
+
"port": 80,
|
|
264
|
+
"networkPassword": "secret"
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Set `C64_MODE=u2` to make this the initial backend. `U2_HOST`, `U2_PORT`, and `U2_PASSWORD` override this profile. U2-family firmware exposes the shared REST subset; it does not provide machine input, debug-register access, power-off, or streaming. `read_menu_screen` requires U2 firmware 3.15 or later.
|
|
270
|
+
|
|
245
271
|
### Backend Configuration: VICE
|
|
246
272
|
|
|
247
273
|
C64 Bridge can either connect to an already running VICE Binary Monitor or manage a local VICE process for you. The usual managed setup only needs the emulator binary and, when auto-detection cannot find it, the VICE resource directory:
|
|
@@ -324,13 +350,15 @@ If VICE is installed outside the usual search paths, add `VICE_BINARY` and, if R
|
|
|
324
350
|
|
|
325
351
|
### Runtime Backend Switching
|
|
326
352
|
|
|
327
|
-
|
|
353
|
+
Configure any combination of `c64u`, `u2`, and `vice`. C64 Bridge starts on `C64_MODE` (default `c64u`) and keeps every configured backend ready for `c64_select_backend`.
|
|
328
354
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
355
|
+
| Profile | Targets | Key limits |
|
|
356
|
+
| --- | --- | --- |
|
|
357
|
+
| `c64u` | C64 Ultimate, Ultimate 64 | Full Ultimate REST surface, including machine input and streaming. |
|
|
358
|
+
| `u2` | U2, U2+, U2+L | Shared REST subset; no machine input, debug registers, power-off, or streaming. |
|
|
359
|
+
| `vice` | VICE emulator | Binary Monitor-backed emulator controls; no Ultimate REST API. |
|
|
360
|
+
|
|
361
|
+
Use `c64://platform/status` to inspect the active backend and available tools. State the target in the same prompt, for example `u2: list drives`, `c64u: run this PRG`, or `vice: write HELLO`. On U2-family cartridges, `c64_system` `power_cycle` uses REST reboot; C64U/U64 uses verified Tool Menu navigation, and VICE starts fresh.
|
|
334
362
|
|
|
335
363
|
Prompt illustration (issued via Copilot in VS Code, using GPT 5.4 Medium):
|
|
336
364
|
|
|
@@ -342,11 +370,12 @@ c64u: write a small BASIC program that clears the screen and prints HELLO C64U
|
|
|
342
370
|
vice: write a small BASIC program that clears the screen and prints HELLO VICE
|
|
343
371
|
```
|
|
344
372
|
|
|
345
|
-
The screenshots below
|
|
373
|
+
The screenshots below are available for the two backends that provide frame capture. C64U uses streamed video frames; VICE captures and normalizes its display. U2-family cartridges do not provide firmware streaming, so they intentionally have no screenshot row.
|
|
346
374
|
|
|
347
375
|
| Backend | Screenshot |
|
|
348
376
|
| --- | --- |
|
|
349
377
|
| C64 Ultimate |  |
|
|
378
|
+
| U2-family | Frame capture unavailable (no firmware streaming). |
|
|
350
379
|
| VICE |  |
|
|
351
380
|
|
|
352
381
|
## VS Code MCP Setup
|
|
@@ -415,7 +444,7 @@ You can add `env` entries in `.vscode/mcp.json` to select a config file, overrid
|
|
|
415
444
|
|
|
416
445
|
- `C64BRIDGE_CONFIG` points to a specific config file
|
|
417
446
|
- `C64U_HOST`, `C64U_PORT`, and `C64U_PASSWORD` override the C64 Ultimate connection without editing config files
|
|
418
|
-
- `C64_MODE` forces the initial backend to `c64u` or `vice`
|
|
447
|
+
- `C64_MODE` forces the initial backend to `c64u`, `u2`, or `vice`; `U2_HOST`, `U2_PORT`, and `U2_PASSWORD` override the selected U2 profile.
|
|
419
448
|
- `LOG_LEVEL=debug` enables verbose logging
|
|
420
449
|
|
|
421
450
|
For VICE-specific overrides such as `VICE_ARGS=-minimized`, `VICE_VISIBLE=false`, or custom VICE paths, use the patterns in [Backend Configuration: VICE](#backend-configuration-vice).
|
|
@@ -493,7 +522,7 @@ Every runtime environment variable documented in `mcp.json` can be set in your M
|
|
|
493
522
|
|
|
494
523
|
| Variable | Default | JSON Config Key | Description |
|
|
495
524
|
| --- | --- | --- | --- |
|
|
496
|
-
| `C64_MODE` | c64u | — | Select active backend (c64u
|
|
525
|
+
| `C64_MODE` | c64u | — | Select active backend (c64u/U64 hardware, u2/U2-family cartridge, or vice emulator) |
|
|
497
526
|
| `C64_TASK_STATE_FILE` | auto | — | Override the path used to persist MCP background-task state |
|
|
498
527
|
| `C64BRIDGE_CONFIG` | ~/.c64bridge.json | config path | Path to configuration JSON |
|
|
499
528
|
| `C64BRIDGE_DIAGNOSTICS_DIR` | ~/.c64bridge/diagnostics | — | Override the directory where persistent MCP diagnostics files are written |
|
|
@@ -511,6 +540,14 @@ Every runtime environment variable documented in `mcp.json` can be set in your M
|
|
|
511
540
|
| `C64U_PASSWORD` | | c64u.networkPassword | Override the C64 Ultimate network password sent as X-Password |
|
|
512
541
|
| `C64U_PORT` | 80 | c64u.port | Override the C64 Ultimate REST port |
|
|
513
542
|
|
|
543
|
+
#### U2-family
|
|
544
|
+
|
|
545
|
+
| Variable | Default | JSON Config Key | Description |
|
|
546
|
+
| --- | --- | --- | --- |
|
|
547
|
+
| `U2_HOST` | | u2.host | Override the U2/U2+/U2+L host name or IP address when C64_MODE=u2 |
|
|
548
|
+
| `U2_PASSWORD` | | u2.networkPassword | Override the U2-family network password sent as X-Password when C64_MODE=u2 |
|
|
549
|
+
| `U2_PORT` | | u2.port | Override the U2-family REST port when C64_MODE=u2 |
|
|
550
|
+
|
|
514
551
|
#### VICE Runtime
|
|
515
552
|
|
|
516
553
|
| Variable | Default | JSON Config Key | Description |
|
|
@@ -573,7 +610,7 @@ Every runtime environment variable documented in `mcp.json` can be set in your M
|
|
|
573
610
|
claude mcp add c64bridge -- npx -y c64bridge@latest
|
|
574
611
|
```
|
|
575
612
|
|
|
576
|
-
Use `--scope user` to make it available across all your projects, or `--scope project` to write a `.mcp.json` next to the current repo. Backend selection (`c64u`
|
|
613
|
+
Use `--scope user` to make it available across all your projects, or `--scope project` to write a `.mcp.json` next to the current repo. Backend selection (`c64u`, `u2`, or `vice`), host, port, and password come from the same files documented in [Configuration](#configuration); per-shell overrides come from the variables in [Runtime Environment Variable Reference](#runtime-environment-variable-reference).
|
|
577
614
|
|
|
578
615
|
**Project-scoped discovery** — this repository ships a checked-in [.mcp.json](./.mcp.json) that points Claude Code at the local source via `node scripts/start.mjs`. When you open the repo with `claude` (CLI or VS Code plugin), Claude Code prompts to enable the project-scoped server on first run. Approve it once and the `c64_*` tools become discoverable in that workspace.
|
|
579
616
|
|
|
@@ -676,221 +713,226 @@ _No operations defined._
|
|
|
676
713
|
|
|
677
714
|
Grouped entry point for configuration reads/writes, diagnostics, and snapshots.
|
|
678
715
|
|
|
679
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
716
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
680
717
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
681
|
-
| `batch_update` | Apply multiple configuration updates in a single request. | — | — |
|
|
682
|
-
| `diff` | Compare the current configuration with a snapshot. | `path` | — |
|
|
683
|
-
| `get` | Read a configuration category or specific item. | `category` | `item` |
|
|
684
|
-
| `info` | Retrieve Ultimate hardware information and status. | — | — |
|
|
685
|
-
| `list` | List configuration categories reported by the firmware. | — | — |
|
|
686
|
-
| `load_flash` | Load configuration from flash storage. | — | — |
|
|
687
|
-
| `read_debugreg` | Read the Ultimate debug register ($D7FF). | — | — |
|
|
688
|
-
| `reset_defaults` | Reset firmware configuration to factory defaults. | — | — |
|
|
689
|
-
| `restore` | Restore configuration from a snapshot file. | `path` | `applyToFlash=false` |
|
|
690
|
-
| `save_flash` | Persist the current configuration to flash storage. | — | — |
|
|
691
|
-
| `set` | Write a configuration value in the selected category. | `category`, `item`, `value` | — |
|
|
692
|
-
| `shuffle` | Discover PRG/CRT files and run each with optional screen capture. | — | `root="/"`, `extensions=["prg","crt"]`, `durationMs=5000`, `captureScreen=true`, `maxPrograms=10`, `outputPath`, `resetDelayMs=100` |
|
|
693
|
-
| `snapshot` | Snapshot configuration to disk for later restore or diff. | `path` | — |
|
|
694
|
-
| `version` | Fetch firmware version details. | — | — |
|
|
695
|
-
| `write_debugreg` | Write a hex value to the Ultimate debug register ($D7FF). | `value` | — |
|
|
718
|
+
| `batch_update` | Apply multiple configuration updates in a single request. | — | — | ✅ | ✅ | ✅ |
|
|
719
|
+
| `diff` | Compare the current configuration with a snapshot. | `path` | — | ✅ | ✅ | ✅ |
|
|
720
|
+
| `get` | Read a configuration category or specific item. | `category` | `item` | ✅ | ✅ | ✅ |
|
|
721
|
+
| `info` | Retrieve Ultimate hardware information and status. | — | — | ✅ | ✅ | ✅ |
|
|
722
|
+
| `list` | List configuration categories reported by the firmware. | — | — | ✅ | ✅ | ✅ |
|
|
723
|
+
| `load_flash` | Load configuration from flash storage. | — | — | ✅ | ✅ | |
|
|
724
|
+
| `read_debugreg` | Read the Ultimate debug register ($D7FF). | — | — | ✅ | | |
|
|
725
|
+
| `reset_defaults` | Reset firmware configuration to factory defaults. | — | — | ✅ | ✅ | |
|
|
726
|
+
| `restore` | Restore configuration from a snapshot file. | `path` | `applyToFlash=false` | ✅ | ✅ | ✅ |
|
|
727
|
+
| `save_flash` | Persist the current configuration to flash storage. | — | — | ✅ | ✅ | |
|
|
728
|
+
| `set` | Write a configuration value in the selected category. | `category`, `item`, `value` | — | ✅ | ✅ | ✅ |
|
|
729
|
+
| `shuffle` | Discover PRG/CRT files and run each with optional screen capture. | — | `root="/"`, `extensions=["prg","crt"]`, `durationMs=5000`, `captureScreen=true`, `maxPrograms=10`, `outputPath`, `resetDelayMs=100` | ✅ | ✅ | |
|
|
730
|
+
| `snapshot` | Snapshot configuration to disk for later restore or diff. | `path` | — | ✅ | ✅ | ✅ |
|
|
731
|
+
| `version` | Fetch firmware version details. | — | — | ✅ | ✅ | ✅ |
|
|
732
|
+
| `write_debugreg` | Write a hex value to the Ultimate debug register ($D7FF). | `value` | — | ✅ | | |
|
|
696
733
|
|
|
697
734
|
#### c64_debug
|
|
698
735
|
|
|
699
736
|
Grouped entry point for VICE debugger operations (breakpoints, registers, stepping).
|
|
700
737
|
|
|
701
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
738
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
702
739
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
703
|
-
| `continue_execution` | Exit the Binary Monitor and resume CPU execution (BM 0xAA Exit). | — | — |
|
|
704
|
-
| `create_checkpoint` | Create a new checkpoint (breakpoint) in VICE. | `address` | `endAddress`, `stopOnHit=true`, `enabled=true`, `temporary=false`, `label`, `operations`, `memspace` |
|
|
705
|
-
| `delete_checkpoint` | Remove a checkpoint by id. | `id` | — |
|
|
706
|
-
| `get_checkpoint` | Fetch a single checkpoint by id. | `id` | — |
|
|
707
|
-
| `get_monitor_state` | Read CPU registers and return the current monitor state. | — | `memspace` |
|
|
708
|
-
| `get_registers` | Read register values, optionally filtered by name or id. | — | `memspace`, `registers` |
|
|
709
|
-
| `list_checkpoints` | List all active VICE checkpoints (breakpoints). | — | — |
|
|
710
|
-
| `list_registers` | List available registers (metadata). | — | `memspace` |
|
|
711
|
-
| `nuclear_reset` | Kill and restart the VICE process (managed instances only). | — | — |
|
|
712
|
-
| `set_condition` | Attach a conditional expression to a checkpoint. | `id`, `expression` | — |
|
|
713
|
-
| `set_registers` | Write register values. | `writes` | `memspace` |
|
|
714
|
-
| `step` | Single-step CPU execution. | — | `count=1`, `mode` |
|
|
715
|
-
| `step_return` | Continue execution until the current routine returns. | — | — |
|
|
716
|
-
| `toggle_checkpoint` | Enable or disable a checkpoint by id. | `id`, `enabled` | — |
|
|
717
|
-
| `wait_for_state` | Poll CPU registers until PC equals expectedPC or timeout elapses. | — | `expectedPC`, `timeoutMs=5000`, `pollMs=100` |
|
|
740
|
+
| `continue_execution` | Exit the Binary Monitor and resume CPU execution (BM 0xAA Exit). | — | — | | | ✅ |
|
|
741
|
+
| `create_checkpoint` | Create a new checkpoint (breakpoint) in VICE. | `address` | `endAddress`, `stopOnHit=true`, `enabled=true`, `temporary=false`, `label`, `operations`, `memspace` | | | ✅ |
|
|
742
|
+
| `delete_checkpoint` | Remove a checkpoint by id. | `id` | — | | | ✅ |
|
|
743
|
+
| `get_checkpoint` | Fetch a single checkpoint by id. | `id` | — | | | ✅ |
|
|
744
|
+
| `get_monitor_state` | Read CPU registers and return the current monitor state. | — | `memspace` | | | ✅ |
|
|
745
|
+
| `get_registers` | Read register values, optionally filtered by name or id. | — | `memspace`, `registers` | | | ✅ |
|
|
746
|
+
| `list_checkpoints` | List all active VICE checkpoints (breakpoints). | — | — | | | ✅ |
|
|
747
|
+
| `list_registers` | List available registers (metadata). | — | `memspace` | | | ✅ |
|
|
748
|
+
| `nuclear_reset` | Kill and restart the VICE process (managed instances only). | — | — | | | ✅ |
|
|
749
|
+
| `set_condition` | Attach a conditional expression to a checkpoint. | `id`, `expression` | — | | | ✅ |
|
|
750
|
+
| `set_registers` | Write register values. | `writes` | `memspace` | | | ✅ |
|
|
751
|
+
| `step` | Single-step CPU execution. | — | `count=1`, `mode` | | | ✅ |
|
|
752
|
+
| `step_return` | Continue execution until the current routine returns. | — | — | | | ✅ |
|
|
753
|
+
| `toggle_checkpoint` | Enable or disable a checkpoint by id. | `id`, `enabled` | — | | | ✅ |
|
|
754
|
+
| `wait_for_state` | Poll CPU registers until PC equals expectedPC or timeout elapses. | — | `expectedPC`, `timeoutMs=5000`, `pollMs=100` | | | ✅ |
|
|
718
755
|
|
|
719
756
|
#### c64_disk
|
|
720
757
|
|
|
721
758
|
Grouped entry point for disk mounts, listings, image creation, and program discovery.
|
|
722
759
|
|
|
723
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
760
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
724
761
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
725
|
-
| `create_image` | Create a blank disk image of the specified format. | `format`, `path` | `diskname`, `tracks` |
|
|
726
|
-
| `file_info` | Inspect metadata for a file on the Ultimate filesystem. | `path` | — |
|
|
727
|
-
| `find_and_run` | Search for a PRG/CRT by name substring and run the first match. | `nameContains` | `root="/"`, `extensions`, `caseInsensitive=true`, `sort="discovered"`, `waitMs=0`, `captureCandidates=10` |
|
|
728
|
-
| `list_drives` | List Ultimate drive slots and their mounted images. | — | — |
|
|
729
|
-
| `mount` | Mount a disk image with optional verification and retries. | `drive`, `image` | `type`, `attachmentMode`, `driveMode`, `verify=false`, `powerOnIfNeeded=true`, `resetAfterMount=true`, `maxRetries=2`, `retryDelayMs=500` |
|
|
730
|
-
| `unmount` | Remove the mounted image from an Ultimate drive slot. | `drive` | — |
|
|
762
|
+
| `create_image` | Create a blank disk image of the specified format. | `format`, `path` | `diskname`, `tracks` | ✅ | ✅ | |
|
|
763
|
+
| `file_info` | Inspect metadata for a file on the Ultimate filesystem. | `path` | — | ✅ | ✅ | |
|
|
764
|
+
| `find_and_run` | Search for a PRG/CRT by name substring and run the first match. | `nameContains` | `root="/"`, `extensions`, `caseInsensitive=true`, `sort="discovered"`, `waitMs=0`, `captureCandidates=10` | ✅ | ✅ | |
|
|
765
|
+
| `list_drives` | List Ultimate drive slots and their mounted images. | — | — | ✅ | ✅ | ✅ |
|
|
766
|
+
| `mount` | Mount a disk image with optional verification and retries. Supports verification. | `drive`, `image` | `type`, `attachmentMode`, `driveMode`, `verify=false`, `powerOnIfNeeded=true`, `resetAfterMount=true`, `maxRetries=2`, `retryDelayMs=500` | ✅ | ✅ | ✅ |
|
|
767
|
+
| `unmount` | Remove the mounted image from an Ultimate drive slot. | `drive` | — | ✅ | ✅ | ✅ |
|
|
731
768
|
|
|
732
769
|
#### c64_drive
|
|
733
770
|
|
|
734
771
|
Grouped entry point for drive power, mode, reset, and ROM operations.
|
|
735
772
|
|
|
736
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
773
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
737
774
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
738
|
-
| `load_rom` | Temporarily load a custom ROM into an Ultimate drive slot. | `drive`, `path` | — |
|
|
739
|
-
| `power_off` | Power off a specific Ultimate drive slot. | `drive` | — |
|
|
740
|
-
| `power_on` | Power on a specific Ultimate drive slot. | `drive` | — |
|
|
741
|
-
| `reset` | Issue an IEC reset for the selected drive slot. | `drive` | — |
|
|
742
|
-
| `set_mode` | Set the emulation mode for a drive slot (1541/1571/1581). | `drive`, `mode` | — |
|
|
775
|
+
| `load_rom` | Temporarily load a custom ROM into an Ultimate drive slot. | `drive`, `path` | — | ✅ | ✅ | |
|
|
776
|
+
| `power_off` | Power off a specific Ultimate drive slot. | `drive` | — | ✅ | ✅ | ✅ |
|
|
777
|
+
| `power_on` | Power on a specific Ultimate drive slot. | `drive` | — | ✅ | ✅ | ✅ |
|
|
778
|
+
| `reset` | Issue an IEC reset for the selected drive slot. | `drive` | — | ✅ | ✅ | ✅ |
|
|
779
|
+
| `set_mode` | Set the emulation mode for a drive slot (1541/1571/1581). | `drive`, `mode` | — | ✅ | ✅ | ✅ |
|
|
743
780
|
|
|
744
781
|
#### c64_extract
|
|
745
782
|
|
|
746
783
|
Grouped entry point for sprite/charset extraction, memory dumps, filesystem stats, and firmware health checks.
|
|
747
784
|
|
|
748
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
785
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
749
786
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
750
|
-
| `charset` | Locate and extract 2KB character sets from RAM. | — | `address`, `scanRange="common"`, `outputPath`, `pauseDuringRead=true`, `minNonEmptyChars=32`, `minEntropy=0.3` |
|
|
751
|
-
| `firmware_health` | Run firmware readiness checks and report status metrics. | — | — |
|
|
752
|
-
| `fs_stats` | Walk the filesystem and aggregate counts/bytes by extension. | — | `root="/"`, `extensions`, `includeContainers=true`, `maxSamplesPerExtension=3` |
|
|
753
|
-
| `memory_dump` | Dump a RAM range to hex or binary files with manifest metadata. | `address`, `length`, `outputPath` | `format="hex"`, `chunkSize=512`, `pauseDuringRead=true`, `retries=1` |
|
|
754
|
-
| `sprites` | Scan RAM for sprites and optionally export .spr files. | `address`, `length` | `stride=64`, `maxSprites=16`, `minNonZeroRows=4`, `minSetBits=12`, `includeBase64=true`, `outputDir`, `pauseDuringRead=true` |
|
|
787
|
+
| `charset` | Locate and extract 2KB character sets from RAM. | — | `address`, `scanRange="common"`, `outputPath`, `pauseDuringRead=true`, `minNonEmptyChars=32`, `minEntropy=0.3` | ✅ | | |
|
|
788
|
+
| `firmware_health` | Run firmware readiness checks and report status metrics. | — | — | ✅ | | |
|
|
789
|
+
| `fs_stats` | Walk the filesystem and aggregate counts/bytes by extension. | — | `root="/"`, `extensions`, `includeContainers=true`, `maxSamplesPerExtension=3` | ✅ | | |
|
|
790
|
+
| `memory_dump` | Dump a RAM range to hex or binary files with manifest metadata. | `address`, `length`, `outputPath` | `format="hex"`, `chunkSize=512`, `pauseDuringRead=true`, `retries=1` | ✅ | | |
|
|
791
|
+
| `sprites` | Scan RAM for sprites and optionally export .spr files. | `address`, `length` | `stride=64`, `maxSprites=16`, `minNonZeroRows=4`, `minSetBits=12`, `includeBase64=true`, `outputDir`, `pauseDuringRead=true` | ✅ | | |
|
|
755
792
|
|
|
756
793
|
#### c64_graphics
|
|
757
794
|
|
|
758
795
|
Grouped entry point for frame capture and graphics rendering workflows.
|
|
759
796
|
|
|
760
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
797
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
761
798
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
762
|
-
| `capture_frame` | Capture one or more complete video frames from the active backend. | — | `count=1`, `includePixels=true`, `encoding="base64"` |
|
|
763
|
-
| `get_display_state` | Read VIC-II and CIA2 registers to determine the current graphics mode and memory layout.
|
|
764
|
-
| `render_bitmap` | Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. | `imagePath`, `format` | `bitmapAddress=8192`, `screenAddress=1024`, `borderColor=0`, `backgroundColor=0`, `preserveAspect=true` |
|
|
765
|
-
| `render_petscii_art` | Create PETSCII art from prompts, text, or explicit bitmap data, and optionally display it on the C64. | — | `prompt`, `text`, `maxWidth`, `maxHeight`, `borderColor`, `backgroundColor`, `foregroundColor`, `dryRun=false`, `bitmap` |
|
|
766
|
-
| `render_petscii_text` | Display PETSCII text with optional border and background colours. | `text` | `borderColor`, `backgroundColor` |
|
|
767
|
-
| `render_sprite` | Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. | `sprite` | `index=0`, `x=100`, `y=100`, `color=1`, `multicolour=false` |
|
|
799
|
+
| `capture_frame` | Capture one or more complete video frames from the active backend. | — | `count=1`, `includePixels=true`, `encoding="base64"` | ✅ | ✅ | ✅ |
|
|
800
|
+
| `get_display_state` | Read VIC-II and CIA2 registers to determine the current graphics mode and memory layout. The same shared-memory path is used on C64U/U64, U2-family hardware, and VICE, so the response shape is identical. | — | — | ✅ | ✅ | ✅ |
|
|
801
|
+
| `render_bitmap` | Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. | `imagePath`, `format` | `bitmapAddress=8192`, `screenAddress=1024`, `borderColor=0`, `backgroundColor=0`, `preserveAspect=true` | ✅ | ✅ | ✅ |
|
|
802
|
+
| `render_petscii_art` | Create PETSCII art from prompts, text, or explicit bitmap data, and optionally display it on the C64. | — | `prompt`, `text`, `maxWidth`, `maxHeight`, `borderColor`, `backgroundColor`, `foregroundColor`, `dryRun=false`, `bitmap` | ✅ | ✅ | ✅ |
|
|
803
|
+
| `render_petscii_text` | Display PETSCII text with optional border and background colours. | `text` | `borderColor`, `backgroundColor` | ✅ | ✅ | ✅ |
|
|
804
|
+
| `render_sprite` | Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. | `sprite` | `index=0`, `x=100`, `y=100`, `color=1`, `multicolour=false` | ✅ | ✅ | ✅ |
|
|
768
805
|
|
|
769
806
|
#### c64_input
|
|
770
807
|
|
|
771
|
-
|
|
808
|
+
Cross-platform PETSCII typing plus native Ultimate keyboard and joystick events.
|
|
772
809
|
|
|
773
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
810
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
774
811
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
775
|
-
| `joystick` | Simulate joystick input
|
|
776
|
-
| `key` | Tap a single key or hold it for a duration. | `key` | `durationMs=0`, `count=1` |
|
|
777
|
-
| `
|
|
812
|
+
| `joystick` | Simulate joystick input. On C64U/U64 this uses machine:input (a C64U firmware version that provides it, or U64 3.15+); VICE writes CIA1 registers. | `port`, `controls`, `action` | `durationMs=80` | ✅ | | ✅ |
|
|
813
|
+
| `key` | Tap a single key or hold it for a duration. | `key` | `durationMs=0`, `count=1` | ✅ | ✅ | ✅ |
|
|
814
|
+
| `keyboard` | Send physical C64 keyboard matrix events through machine:input (a C64U firmware version that provides it, or U64 3.15+). | `inputs`, `transition` | — | ✅ | | |
|
|
815
|
+
| `release_all` | Release every key and joystick control injected through machine:input (a C64U firmware version that provides it, or U64 3.15+). | — | — | ✅ | | |
|
|
816
|
+
| `state` | Read the keys and joystick controls held through machine:input (a C64U firmware version that provides it, or U64 3.15+). | — | — | ✅ | | |
|
|
817
|
+
| `write_text` | Send a text string to the keyboard buffer, with PETSCII token expansion. | `text` | `delayMs=0` | ✅ | ✅ | ✅ |
|
|
778
818
|
|
|
779
819
|
#### c64_memory
|
|
780
820
|
|
|
781
821
|
Grouped entry point for memory I/O, screen reads, and screen polling.
|
|
782
822
|
|
|
783
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
823
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
784
824
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
785
|
-
| `compare_memory` | Compare two memory regions byte-by-byte and report differences. | `address1`, `address2`, `length` | `maxDiffs=10` |
|
|
786
|
-
| `copy_memory` | Copy a RAM region to another address. | `source`, `dest`, `length` | — |
|
|
787
|
-
| `disassemble` | Disassemble a memory region into annotated 6502/6510 instructions, including undocumented opcodes with canonical names. Symbol annotations from `.vs` files are applied when available. Works on
|
|
788
|
-
| `fill_memory` | Fill a memory range with a repeating byte pattern. | `address`, `length`, `pattern` | — |
|
|
789
|
-
| `read` | Read a range of bytes and return a hex dump with address metadata. | `address` | `length=256` |
|
|
790
|
-
| `read_screen` | Return the current 40x25 text screen converted to ASCII. | — | — |
|
|
791
|
-
| `save_memory` | Dump a memory range to a local file, with an optional PRG load-address header. | `startAddress`, `endAddress`, `filePath` | `asPrg=true` |
|
|
792
|
-
| `search_memory` | Search for a byte pattern within a memory range and return matching addresses. | `startAddress`, `endAddress`, `pattern` | `maxResults=10` |
|
|
793
|
-
| `wait_for_text` | Poll the screen until a substring or regex appears, or timeout elapses. | `pattern` | `isRegex=false`, `caseInsensitive=true`, `timeoutMs=3000`, `intervalMs=100` |
|
|
794
|
-
| `write` | Write a hexadecimal byte sequence into RAM. | `address`, `bytes` | `verify=false`, `expected`, `mask`, `abortOnMismatch=true` |
|
|
825
|
+
| `compare_memory` | Compare two memory regions byte-by-byte and report differences. | `address1`, `address2`, `length` | `maxDiffs=10` | ✅ | ✅ | ✅ |
|
|
826
|
+
| `copy_memory` | Copy a RAM region to another address. | `source`, `dest`, `length` | — | ✅ | ✅ | ✅ |
|
|
827
|
+
| `disassemble` | Disassemble a memory region into annotated 6502/6510 instructions, including undocumented opcodes with canonical names. Symbol annotations from `.vs` files are applied when available. Works on C64U/U64, U2-family hardware, and VICE. | `address` | `length=64`, `instructionCount` | ✅ | ✅ | ✅ |
|
|
828
|
+
| `fill_memory` | Fill a memory range with a repeating byte pattern. | `address`, `length`, `pattern` | — | ✅ | ✅ | ✅ |
|
|
829
|
+
| `read` | Read a range of bytes and return a hex dump with address metadata. | `address` | `length=256` | ✅ | ✅ | ✅ |
|
|
830
|
+
| `read_screen` | Return the current 40x25 text screen converted to ASCII. | — | — | ✅ | ✅ | ✅ |
|
|
831
|
+
| `save_memory` | Dump a memory range to a local file, with an optional PRG load-address header. | `startAddress`, `endAddress`, `filePath` | `asPrg=true` | ✅ | ✅ | ✅ |
|
|
832
|
+
| `search_memory` | Search for a byte pattern within a memory range and return matching addresses. | `startAddress`, `endAddress`, `pattern` | `maxResults=10` | ✅ | ✅ | ✅ |
|
|
833
|
+
| `wait_for_text` | Poll the screen until a substring or regex appears, or timeout elapses. | `pattern` | `isRegex=false`, `caseInsensitive=true`, `timeoutMs=3000`, `intervalMs=100` | ✅ | ✅ | ✅ |
|
|
834
|
+
| `write` | Write a hexadecimal byte sequence into RAM. Supports verification. | `address`, `bytes` | `verify=false`, `expected`, `mask`, `abortOnMismatch=true` | ✅ | ✅ | ✅ |
|
|
795
835
|
|
|
796
836
|
#### c64_printer
|
|
797
837
|
|
|
798
838
|
Grouped entry point for Commodore and Epson printing helpers.
|
|
799
839
|
|
|
800
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
840
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
801
841
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
802
|
-
| `define_chars` | Define custom printer characters (Commodore DLL mode). | `firstChar`, `chars` | `secondaryAddress` |
|
|
803
|
-
| `print_bitmap` | Print a bitmap row via Commodore (BIM) or Epson ESC/P workflows. | `printer="commodore"`, `columns` | `repeats`, `useSubRepeat`, `secondaryAddress`, `ensureMsb=true`, `mode`, `density`, `timesPerLine` |
|
|
804
|
-
| `print_text` | Generate BASIC that prints text to device 4. | `text` | `target="commodore"`, `secondaryAddress`, `formFeed=false` |
|
|
842
|
+
| `define_chars` | Define custom printer characters (Commodore DLL mode). | `firstChar`, `chars` | `secondaryAddress` | ✅ | | |
|
|
843
|
+
| `print_bitmap` | Print a bitmap row via Commodore (BIM) or Epson ESC/P workflows. | `printer="commodore"`, `columns` | `repeats`, `useSubRepeat`, `secondaryAddress`, `ensureMsb=true`, `mode`, `density`, `timesPerLine` | ✅ | | |
|
|
844
|
+
| `print_text` | Generate BASIC that prints text to device 4. | `text` | `target="commodore"`, `secondaryAddress`, `formFeed=false` | ✅ | | |
|
|
805
845
|
|
|
806
846
|
#### c64_program
|
|
807
847
|
|
|
808
848
|
Grouped entry point for program upload, execution, and batch workflows.
|
|
809
849
|
|
|
810
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
850
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
811
851
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
812
|
-
| `batch_run` | Run multiple PRG/CRT programs with post-run assertions. | `programs` | `continueOnError=false`, `durationMs=2000`, `outputPath`, `resetDelayMs=100` |
|
|
813
|
-
| `bundle_run` | Capture screen, memory, and debug registers into an artifact bundle. | `runId`, `outputPath` | `captureScreen=true`, `memoryRanges`, `captureDebugReg=true` |
|
|
814
|
-
| `cross_platform_greeting` | Show a platform-customized greeting on one or more configured backends, capture screenshots, and verify the results. | — | `platforms=["vice","c64u"]`, `messageTemplate="HAVE A GREAT DAY, {PLATFORM}!"`, `verify=true`, `captureScreenshot=true`, `outputPath`, `restoreActiveBackend=true`, `timeoutMs=1500`, `pollIntervalMs=100` |
|
|
815
|
-
| `load_prg` | Load a PRG from Ultimate storage without executing it. | `path` | `symbolsFile` |
|
|
816
|
-
| `run_crt` | Mount and run a CRT cartridge image. | `path` | — |
|
|
817
|
-
| `run_prg` | Load and execute a PRG from Ultimate-visible storage on
|
|
818
|
-
| `upload_run_asm` | Assemble 6502/6510 source, upload the PRG, and execute it. | `program` | `verify=false` |
|
|
819
|
-
| `upload_run_basic` | Upload Commodore BASIC v2 source and execute it immediately. | `program` | `verify=false` |
|
|
852
|
+
| `batch_run` | Run multiple PRG/CRT programs with post-run assertions. | `programs` | `continueOnError=false`, `durationMs=2000`, `outputPath`, `resetDelayMs=100` | ✅ | ✅ | ✅ |
|
|
853
|
+
| `bundle_run` | Capture screen, memory, and debug registers into an artifact bundle. | `runId`, `outputPath` | `captureScreen=true`, `memoryRanges`, `captureDebugReg=true` | ✅ | ✅ | |
|
|
854
|
+
| `cross_platform_greeting` | Show a platform-customized greeting on one or more configured backends, capture screenshots, and verify the results. Supports verification. | — | `platforms=["vice","c64u"]`, `messageTemplate="HAVE A GREAT DAY, {PLATFORM}!"`, `verify=true`, `captureScreenshot=true`, `outputPath`, `restoreActiveBackend=true`, `timeoutMs=1500`, `pollIntervalMs=100` | ✅ | ✅ | ✅ |
|
|
855
|
+
| `load_prg` | Load a PRG from Ultimate storage without executing it. | `path` | `symbolsFile` | ✅ | ✅ | |
|
|
856
|
+
| `run_crt` | Mount and run a CRT cartridge image. | `path` | — | ✅ | ✅ | |
|
|
857
|
+
| `run_prg` | Load and execute a PRG from Ultimate-visible storage on C64U/U64 or U2-family hardware, or from a host-local path on VICE. | `path` | `symbolsFile` | ✅ | ✅ | ✅ |
|
|
858
|
+
| `upload_run_asm` | Assemble 6502/6510 source, upload the PRG, and execute it. Supports verification. | `program` | `verify=false` | ✅ | ✅ | ✅ |
|
|
859
|
+
| `upload_run_basic` | Upload Commodore BASIC v2 source and execute it immediately. Supports verification. | `program` | `verify=false` | ✅ | ✅ | ✅ |
|
|
820
860
|
|
|
821
861
|
#### c64_rag
|
|
822
862
|
|
|
823
863
|
Grouped entry point for BASIC and assembly RAG lookups.
|
|
824
864
|
|
|
825
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
865
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
826
866
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
827
|
-
| `asm` | Retrieve 6502/6510 assembly references from the local knowledge base. | `q` | `k=3` |
|
|
828
|
-
| `basic` | Retrieve BASIC references and snippets from the local knowledge base. | `q` | `k=3` |
|
|
867
|
+
| `asm` | Retrieve 6502/6510 assembly references from the local knowledge base. | `q` | `k=3` | ✅ | ✅ | ✅ |
|
|
868
|
+
| `basic` | Retrieve BASIC references and snippets from the local knowledge base. | `q` | `k=3` | ✅ | ✅ | ✅ |
|
|
829
869
|
|
|
830
870
|
#### c64_select_backend
|
|
831
871
|
|
|
832
|
-
Switch the active backend between C64U hardware and the VICE emulator at runtime.
|
|
872
|
+
Switch the active backend between C64U/U64 hardware, U2-family cartridges, and the VICE emulator at runtime.
|
|
833
873
|
|
|
834
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
874
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
835
875
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
836
|
-
| `select` | Switch the active runtime backend without restarting the MCP server. | `backend` | — |
|
|
876
|
+
| `select` | Switch the active runtime backend without restarting the MCP server. | `backend` | — | ✅ | ✅ | ✅ |
|
|
837
877
|
|
|
838
878
|
#### c64_sound
|
|
839
879
|
|
|
840
880
|
Grouped entry point for SID control, playback, composition, and analysis workflows.
|
|
841
881
|
|
|
842
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
882
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
843
883
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
844
|
-
| `analyze` | Automatically analyze SID playback when verification is requested. | `request` | `durationSeconds`, `expectedSidwave` |
|
|
845
|
-
| `capture_samples` | Capture raw stereo PCM samples from the C64 Ultimate audio UDP stream. | — | `count=256`, `encoding="base64"` |
|
|
846
|
-
| `compile_play` | Compile SIDWAVE or CPG source and optionally play it immediately. | — | `sidwave`, `cpg`, `format`, `output="prg"`, `dryRun=false` |
|
|
847
|
-
| `generate` | Generate a lightweight SID arpeggio playback sequence. | — | `root="C4"`, `pattern="0,4,7"`, `steps=16`, `tempoMs=120`, `waveform="tri"`, `preset="classic"` |
|
|
848
|
-
| `note_off` | Release a SID voice by clearing its gate bit. | `voice` | — |
|
|
849
|
-
| `note_on` | Trigger a SID voice with configurable waveform, ADSR, and pitch. | — | `voice=1`, `note`, `frequencyHz`, `system="PAL"`, `waveform="pulse"`, `pulseWidth=2048`, `attack=1`, `decay=1`, `sustain=15`, `release=3` |
|
|
850
|
-
| `pipeline` | Compile a SIDWAVE score, play it, and analyze the recording. | — | `sidwave`, `cpg`, `output="prg"`, `waitBeforeCaptureMs=500`, `analysisDurationSeconds=3`, `expectedSidwave`, `verifySilenceBefore=true`, `verifySilenceAfter=true`, `silenceDurationSeconds=1.5`, `silenceRmsThreshold=0.02`, `postSilenceWaitMs=200`, `silenceWaitMs=150` |
|
|
851
|
-
| `play_mod_file` | Play a MOD tracker module via the Ultimate SID player. | `path` | — |
|
|
852
|
-
| `play_preset` | Compile and play a built-in SID preset such as Für Elise by Beethoven. | — | `preset="fuer_elise"`, `platforms`, `verify=true`, `analysisDurationSeconds=4`, `waitBeforeCaptureMs=400`, `restoreActiveBackend=true` |
|
|
853
|
-
| `play_sid_file` | Play a SID file stored on the Ultimate filesystem. | `path` | `songnr` |
|
|
854
|
-
| `record_analyze` | Record audio for a fixed duration and return SID analysis metrics. | `durationSeconds` | `expectedSidwave` |
|
|
855
|
-
| `reset` | Soft or hard reset of SID registers to clear glitches. | — | `hard=false` |
|
|
856
|
-
| `set_volume` | Set the SID master volume register at $D418 (0-15). | `volume` | — |
|
|
857
|
-
| `silence_all` | Silence all SID voices with optional audio verification. | — | `verify=false` |
|
|
884
|
+
| `analyze` | Automatically analyze SID playback when verification is requested. | `request` | `durationSeconds`, `expectedSidwave` | ✅ | | |
|
|
885
|
+
| `capture_samples` | Capture raw stereo PCM samples from the C64 Ultimate audio UDP stream. | — | `count=256`, `encoding="base64"` | ✅ | | |
|
|
886
|
+
| `compile_play` | Compile SIDWAVE or CPG source and optionally play it immediately. | — | `sidwave`, `cpg`, `format`, `output="prg"`, `dryRun=false` | ✅ | ✅ | ✅ |
|
|
887
|
+
| `generate` | Generate a lightweight SID arpeggio playback sequence. | — | `root="C4"`, `pattern="0,4,7"`, `steps=16`, `tempoMs=120`, `waveform="tri"`, `preset="classic"` | ✅ | ✅ | ✅ |
|
|
888
|
+
| `note_off` | Release a SID voice by clearing its gate bit. | `voice` | — | ✅ | ✅ | ✅ |
|
|
889
|
+
| `note_on` | Trigger a SID voice with configurable waveform, ADSR, and pitch. | — | `voice=1`, `note`, `frequencyHz`, `system="PAL"`, `waveform="pulse"`, `pulseWidth=2048`, `attack=1`, `decay=1`, `sustain=15`, `release=3` | ✅ | ✅ | ✅ |
|
|
890
|
+
| `pipeline` | Compile a SIDWAVE score, play it, and analyze the recording. Supports verification. | — | `sidwave`, `cpg`, `output="prg"`, `waitBeforeCaptureMs=500`, `analysisDurationSeconds=3`, `expectedSidwave`, `verifySilenceBefore=true`, `verifySilenceAfter=true`, `silenceDurationSeconds=1.5`, `silenceRmsThreshold=0.02`, `postSilenceWaitMs=200`, `silenceWaitMs=150` | ✅ | ✅ | |
|
|
891
|
+
| `play_mod_file` | Play a MOD tracker module via the Ultimate SID player. | `path` | — | ✅ | ✅ | |
|
|
892
|
+
| `play_preset` | Compile and play a built-in SID preset such as Für Elise by Beethoven. Supports verification. | — | `preset="fuer_elise"`, `platforms`, `verify=true`, `analysisDurationSeconds=4`, `waitBeforeCaptureMs=400`, `restoreActiveBackend=true` | ✅ | ✅ | ✅ |
|
|
893
|
+
| `play_sid_file` | Play a SID file stored on the Ultimate filesystem. | `path` | `songnr` | ✅ | ✅ | |
|
|
894
|
+
| `record_analyze` | Record audio for a fixed duration and return SID analysis metrics. | `durationSeconds` | `expectedSidwave` | ✅ | | |
|
|
895
|
+
| `reset` | Soft or hard reset of SID registers to clear glitches. | — | `hard=false` | ✅ | ✅ | ✅ |
|
|
896
|
+
| `set_volume` | Set the SID master volume register at $D418 (0-15). | `volume` | — | ✅ | ✅ | ✅ |
|
|
897
|
+
| `silence_all` | Silence all SID voices with optional audio verification. Supports verification. | — | `verify=false` | ✅ | ✅ | ✅ |
|
|
858
898
|
|
|
859
899
|
#### c64_stream
|
|
860
900
|
|
|
861
901
|
Grouped entry point for starting and stopping Ultimate streaming sessions.
|
|
862
902
|
|
|
863
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
903
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
864
904
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
865
|
-
| `start` | Start an Ultimate streaming session toward a host:port target. | `stream`, `target` | — |
|
|
866
|
-
| `stop` | Stop an active Ultimate streaming session. | `stream` | — |
|
|
905
|
+
| `start` | Start an Ultimate streaming session toward a host:port target. | `stream`, `target` | — | ✅ | | |
|
|
906
|
+
| `stop` | Stop an active Ultimate streaming session. | `stream` | — | ✅ | | |
|
|
867
907
|
|
|
868
908
|
#### c64_system
|
|
869
909
|
|
|
870
910
|
Grouped entry point for power, reset, menu, and background task control.
|
|
871
911
|
|
|
872
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
912
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
873
913
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
874
|
-
| `list_tasks` | List known background tasks with status metadata. | — | — |
|
|
875
|
-
| `menu` | Toggle the Ultimate menu button for navigation. | — | — |
|
|
876
|
-
| `pause` | Pause the machine until resumed. | — | — |
|
|
877
|
-
| `performance_report` | Summarize diagnostics spans and tool latencies from the current or latest MCP session. | — | `scope="current"`, `includeTimeline=true`, `maxEntries=25` |
|
|
878
|
-
| `
|
|
879
|
-
| `
|
|
880
|
-
| `
|
|
881
|
-
| `
|
|
882
|
-
| `
|
|
883
|
-
| `
|
|
884
|
-
| `
|
|
914
|
+
| `list_tasks` | List known background tasks with status metadata. | — | — | ✅ | ✅ | ✅ |
|
|
915
|
+
| `menu` | Toggle the Ultimate menu button for navigation. | — | — | ✅ | ✅ | |
|
|
916
|
+
| `pause` | Pause the machine until resumed. | — | — | ✅ | ✅ | |
|
|
917
|
+
| `performance_report` | Summarize diagnostics spans and tool latencies from the current or latest MCP session. | — | `scope="current"`, `includeTimeline=true`, `maxEntries=25` | ✅ | ✅ | ✅ |
|
|
918
|
+
| `power_cycle` | Return the active backend to a fresh state. C64U/U64 Tool Menu verification requires machine:menu_screen (a C64U firmware version that provides it, or U64 3.15+); U2-family reboots through REST. | — | — | ✅ | ✅ | ✅ |
|
|
919
|
+
| `poweroff` | Request a controlled shutdown via the Ultimate firmware. | — | — | ✅ | ✅ | ✅ |
|
|
920
|
+
| `read_menu_screen` | Read the active Ultimate menu's raw character and colour matrix through machine:menu_screen (a C64U firmware version that provides it, or U64/U2 3.15+). | — | — | ✅ | ✅ | |
|
|
921
|
+
| `reboot` | Trigger a firmware reboot to recover from faults. | — | — | ✅ | ✅ | ✅ |
|
|
922
|
+
| `reset` | Issue a soft reset without cutting power. | — | — | ✅ | ✅ | ✅ |
|
|
923
|
+
| `resume` | Resume CPU execution after a pause. | — | — | ✅ | ✅ | |
|
|
924
|
+
| `start_task` | Start a named background task that runs on an interval. | `name`, `operation` | `arguments={}`, `intervalMs=1000`, `maxIterations` | ✅ | ✅ | ✅ |
|
|
925
|
+
| `stop_all_tasks` | Stop every running background task and persist state. | — | — | ✅ | ✅ | ✅ |
|
|
926
|
+
| `stop_task` | Stop a specific background task and clear its timer. | `name` | — | ✅ | ✅ | ✅ |
|
|
885
927
|
|
|
886
928
|
#### c64_vice
|
|
887
929
|
|
|
888
930
|
Grouped entry point for reading and updating selected VICE resources.
|
|
889
931
|
|
|
890
|
-
| Operation | Description | Required Inputs | Optional Inputs |
|
|
932
|
+
| Operation | Description | Required Inputs | Optional Inputs | C64U | U2 | VICE |
|
|
891
933
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
892
|
-
| `resource_get` | Read a VICE configuration resource (safe prefixes only). | `name` | — |
|
|
893
|
-
| `resource_set` | Write a VICE configuration resource (safe prefixes only). | `name`, `value` | — |
|
|
934
|
+
| `resource_get` | Read a VICE configuration resource (safe prefixes only). | `name` | — | | | ✅ |
|
|
935
|
+
| `resource_set` | Write a VICE configuration resource (safe prefixes only). | `name`, `value` | — | | | ✅ |
|
|
894
936
|
|
|
895
937
|
### Resources
|
|
896
938
|
|