c64bridge 0.9.2 → 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 +24 -3
- package/README.md +271 -161
- package/data/basic/rom-routines.md +269 -0
- package/data/context/bootstrap.md +1 -1
- package/data/io/cia-spec.md +2 -2
- package/data/{memory/kernal-memory-map.md → kernal/rom-routines.md} +3 -2
- package/data/memory/low-memory-map.md +1 -0
- package/data/memory/memory-map.md +13 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +127 -12
- package/dist/config.js +34 -8
- package/dist/device.js +75 -45
- package/dist/mcp-server.js +28 -8
- package/dist/platform.js +13 -2
- package/dist/rag/knowledgeIndex.js +54 -9
- package/dist/rag/resourceUris.js +2 -0
- 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/developer.md +3 -2
- 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/resources.json +60 -7
- 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 +21 -5
- package/package.json +14 -8
- package/scripts/mockC64Server.mjs +40 -0
- package/scripts/prepare-release.mjs +13 -2
- package/scripts/update-readme.ts +19 -30
- package/server.json +2 -2
package/mcp/tools.json
CHANGED
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
"required": [
|
|
263
263
|
"op"
|
|
264
264
|
],
|
|
265
|
-
"description": "Program operations available via the c64_program tool.\n\nOperations:\n- load_prg: Load a PRG from Ultimate storage without executing it. Required inputs: path. Optional inputs: symbolsFile.\n- run_prg: Load and execute a PRG from Ultimate-visible storage on
|
|
265
|
+
"description": "Program operations available via the c64_program tool.\n\nOperations:\n- load_prg: Load a PRG from Ultimate storage without executing it. Required inputs: path. Optional inputs: symbolsFile.\n- 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. Required inputs: path. Optional inputs: symbolsFile.\n- run_crt: Mount and run a CRT cartridge image. Required inputs: path.\n- upload_run_basic: Upload Commodore BASIC v2 source and execute it immediately. Required inputs: program. Optional inputs: verify.\n- upload_run_asm: Assemble 6502/6510 source, upload the PRG, and execute it. Required inputs: program. Optional inputs: verify.\n- batch_run: Run multiple PRG/CRT programs with post-run assertions. Required inputs: programs. Optional inputs: continueOnError, durationMs, outputPath, resetDelayMs.\n- bundle_run: Capture screen, memory, and debug registers into an artifact bundle. Required inputs: runId, outputPath. Optional inputs: captureScreen, memoryRanges, captureDebugReg.\n- cross_platform_greeting: Show a platform-customized greeting on one or more configured backends, capture screenshots, and verify the results. Required inputs: none. Optional inputs: platforms, messageTemplate, verify, captureScreenshot, outputPath, restoreActiveBackend, timeoutMs, pollIntervalMs.",
|
|
266
266
|
"additionalProperties": false,
|
|
267
267
|
"x-c64bridge-operations": [
|
|
268
268
|
{
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
},
|
|
305
305
|
{
|
|
306
306
|
"op": "run_prg",
|
|
307
|
-
"description": "Load and execute a PRG from Ultimate-visible storage on
|
|
307
|
+
"description": "Load and execute a PRG from Ultimate-visible storage on C64U/U64 or U2-family hardware, or from a host-local path on VICE.",
|
|
308
308
|
"required": [
|
|
309
309
|
"path"
|
|
310
310
|
],
|
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
],
|
|
314
314
|
"inputSchema": {
|
|
315
315
|
"type": "object",
|
|
316
|
-
"description": "Load and execute a PRG from Ultimate-visible storage on
|
|
316
|
+
"description": "Load and execute a PRG from Ultimate-visible storage on C64U/U64 or U2-family hardware, or from a host-local path on VICE.",
|
|
317
317
|
"properties": {
|
|
318
318
|
"path": {
|
|
319
319
|
"type": "string",
|
|
@@ -799,22 +799,26 @@
|
|
|
799
799
|
],
|
|
800
800
|
"workflowHints": [
|
|
801
801
|
"Choose BASIC or assembly uploaders based on the language you just generated for the user.",
|
|
802
|
-
"Prefer PRG or CRT runners when the user supplies a file path instead of source text; PRG paths are host-local on VICE and Ultimate-visible on
|
|
803
|
-
"For a quick visible confirmation on VICE
|
|
802
|
+
"Prefer PRG or CRT runners when the user supplies a file path instead of source text; PRG paths are host-local on VICE and Ultimate-visible on hardware.",
|
|
803
|
+
"For a quick visible confirmation on VICE, C64U/U64, or U2-family hardware, prefer cross_platform_greeting instead of composing manual backend switches and BASIC upload steps."
|
|
804
804
|
],
|
|
805
805
|
"platforms": [
|
|
806
806
|
"c64u",
|
|
807
|
+
"u2",
|
|
807
808
|
"vice"
|
|
808
809
|
],
|
|
809
810
|
"operationPlatforms": {
|
|
810
811
|
"load_prg": [
|
|
811
|
-
"c64u"
|
|
812
|
+
"c64u",
|
|
813
|
+
"u2"
|
|
812
814
|
],
|
|
813
815
|
"run_crt": [
|
|
814
|
-
"c64u"
|
|
816
|
+
"c64u",
|
|
817
|
+
"u2"
|
|
815
818
|
],
|
|
816
819
|
"bundle_run": [
|
|
817
|
-
"c64u"
|
|
820
|
+
"c64u",
|
|
821
|
+
"u2"
|
|
818
822
|
]
|
|
819
823
|
}
|
|
820
824
|
}
|
|
@@ -1003,7 +1007,7 @@
|
|
|
1003
1007
|
"required": [
|
|
1004
1008
|
"op"
|
|
1005
1009
|
],
|
|
1006
|
-
"description": "Memory operations available via the c64_memory tool.\n\nOperations:\n- read: Read a range of bytes and return a hex dump with address metadata. Required inputs: address. Optional inputs: length.\n- write: Write a hexadecimal byte sequence into RAM. Required inputs: address, bytes. Optional inputs: verify, expected, mask, abortOnMismatch.\n- read_screen: Return the current 40x25 text screen converted to ASCII. Required inputs: none.\n- wait_for_text: Poll the screen until a substring or regex appears, or timeout elapses. Required inputs: pattern. Optional inputs: isRegex, caseInsensitive, timeoutMs, intervalMs.\n- 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
|
|
1010
|
+
"description": "Memory operations available via the c64_memory tool.\n\nOperations:\n- read: Read a range of bytes and return a hex dump with address metadata. Required inputs: address. Optional inputs: length.\n- write: Write a hexadecimal byte sequence into RAM. Required inputs: address, bytes. Optional inputs: verify, expected, mask, abortOnMismatch.\n- read_screen: Return the current 40x25 text screen converted to ASCII. Required inputs: none.\n- wait_for_text: Poll the screen until a substring or regex appears, or timeout elapses. Required inputs: pattern. Optional inputs: isRegex, caseInsensitive, timeoutMs, intervalMs.\n- 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. Required inputs: address. Optional inputs: length, instructionCount.\n- copy_memory: Copy a RAM region to another address. Required inputs: source, dest, length.\n- fill_memory: Fill a memory range with a repeating byte pattern. Required inputs: address, length, pattern.\n- search_memory: Search for a byte pattern within a memory range and return matching addresses. Required inputs: startAddress, endAddress, pattern. Optional inputs: maxResults.\n- compare_memory: Compare two memory regions byte-by-byte and report differences. Required inputs: address1, address2, length. Optional inputs: maxDiffs.\n- save_memory: Dump a memory range to a local file, with an optional PRG load-address header. Required inputs: startAddress, endAddress, filePath. Optional inputs: asPrg.",
|
|
1007
1011
|
"additionalProperties": false,
|
|
1008
1012
|
"x-c64bridge-operations": [
|
|
1009
1013
|
{
|
|
@@ -1197,7 +1201,7 @@
|
|
|
1197
1201
|
},
|
|
1198
1202
|
{
|
|
1199
1203
|
"op": "disassemble",
|
|
1200
|
-
"description": "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
|
|
1204
|
+
"description": "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.",
|
|
1201
1205
|
"required": [
|
|
1202
1206
|
"address"
|
|
1203
1207
|
],
|
|
@@ -1207,7 +1211,7 @@
|
|
|
1207
1211
|
],
|
|
1208
1212
|
"inputSchema": {
|
|
1209
1213
|
"type": "object",
|
|
1210
|
-
"description": "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
|
|
1214
|
+
"description": "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.",
|
|
1211
1215
|
"properties": {
|
|
1212
1216
|
"address": {
|
|
1213
1217
|
"type": "string",
|
|
@@ -1591,6 +1595,7 @@
|
|
|
1591
1595
|
],
|
|
1592
1596
|
"platforms": [
|
|
1593
1597
|
"c64u",
|
|
1598
|
+
"u2",
|
|
1594
1599
|
"vice"
|
|
1595
1600
|
]
|
|
1596
1601
|
}
|
|
@@ -2816,6 +2821,7 @@
|
|
|
2816
2821
|
],
|
|
2817
2822
|
"platforms": [
|
|
2818
2823
|
"c64u",
|
|
2824
|
+
"u2",
|
|
2819
2825
|
"vice"
|
|
2820
2826
|
],
|
|
2821
2827
|
"operationPlatforms": {
|
|
@@ -2823,13 +2829,16 @@
|
|
|
2823
2829
|
"c64u"
|
|
2824
2830
|
],
|
|
2825
2831
|
"play_sid_file": [
|
|
2826
|
-
"c64u"
|
|
2832
|
+
"c64u",
|
|
2833
|
+
"u2"
|
|
2827
2834
|
],
|
|
2828
2835
|
"play_mod_file": [
|
|
2829
|
-
"c64u"
|
|
2836
|
+
"c64u",
|
|
2837
|
+
"u2"
|
|
2830
2838
|
],
|
|
2831
2839
|
"pipeline": [
|
|
2832
|
-
"c64u"
|
|
2840
|
+
"c64u",
|
|
2841
|
+
"u2"
|
|
2833
2842
|
],
|
|
2834
2843
|
"analyze": [
|
|
2835
2844
|
"c64u"
|
|
@@ -2855,7 +2864,9 @@
|
|
|
2855
2864
|
"reset",
|
|
2856
2865
|
"reboot",
|
|
2857
2866
|
"poweroff",
|
|
2867
|
+
"power_cycle",
|
|
2858
2868
|
"menu",
|
|
2869
|
+
"read_menu_screen",
|
|
2859
2870
|
"start_task",
|
|
2860
2871
|
"stop_task",
|
|
2861
2872
|
"stop_all_tasks",
|
|
@@ -2935,7 +2946,7 @@
|
|
|
2935
2946
|
"required": [
|
|
2936
2947
|
"op"
|
|
2937
2948
|
],
|
|
2938
|
-
"description": "System operations available via the c64_system tool.\n\nOperations:\n- pause: Pause the machine until resumed. Required inputs: none.\n- resume: Resume CPU execution after a pause. Required inputs: none.\n- reset: Issue a soft reset without cutting power. Required inputs: none.\n- reboot: Trigger a firmware reboot to recover from faults. Required inputs: none.\n- poweroff: Request a controlled shutdown via the Ultimate firmware. Required inputs: none.\n- menu: Toggle the Ultimate menu button for navigation. Required inputs: none.\n- start_task: Start a named background task that runs on an interval. Required inputs: name, operation. Optional inputs: arguments, intervalMs, maxIterations.\n- stop_task: Stop a specific background task and clear its timer. Required inputs: name.\n- stop_all_tasks: Stop every running background task and persist state. Required inputs: none.\n- list_tasks: List known background tasks with status metadata. Required inputs: none.\n- performance_report: Summarize diagnostics spans and tool latencies from the current or latest MCP session. Required inputs: none. Optional inputs: scope, includeTimeline, maxEntries.",
|
|
2949
|
+
"description": "System operations available via the c64_system tool.\n\nOperations:\n- pause: Pause the machine until resumed. Required inputs: none.\n- resume: Resume CPU execution after a pause. Required inputs: none.\n- reset: Issue a soft reset without cutting power. Required inputs: none.\n- reboot: Trigger a firmware reboot to recover from faults. Required inputs: none.\n- poweroff: Request a controlled shutdown via the Ultimate firmware. Required inputs: none.\n- 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. Required inputs: none.\n- menu: Toggle the Ultimate menu button for navigation. Required inputs: none.\n- 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+). Required inputs: none.\n- start_task: Start a named background task that runs on an interval. Required inputs: name, operation. Optional inputs: arguments, intervalMs, maxIterations.\n- stop_task: Stop a specific background task and clear its timer. Required inputs: name.\n- stop_all_tasks: Stop every running background task and persist state. Required inputs: none.\n- list_tasks: List known background tasks with status metadata. Required inputs: none.\n- performance_report: Summarize diagnostics spans and tool latencies from the current or latest MCP session. Required inputs: none. Optional inputs: scope, includeTimeline, maxEntries.",
|
|
2939
2950
|
"additionalProperties": false,
|
|
2940
2951
|
"x-c64bridge-operations": [
|
|
2941
2952
|
{
|
|
@@ -3033,6 +3044,25 @@
|
|
|
3033
3044
|
]
|
|
3034
3045
|
}
|
|
3035
3046
|
},
|
|
3047
|
+
{
|
|
3048
|
+
"op": "power_cycle",
|
|
3049
|
+
"description": "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.",
|
|
3050
|
+
"required": [],
|
|
3051
|
+
"optional": [],
|
|
3052
|
+
"inputSchema": {
|
|
3053
|
+
"type": "object",
|
|
3054
|
+
"description": "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.",
|
|
3055
|
+
"properties": {
|
|
3056
|
+
"op": {
|
|
3057
|
+
"const": "power_cycle"
|
|
3058
|
+
}
|
|
3059
|
+
},
|
|
3060
|
+
"additionalProperties": false,
|
|
3061
|
+
"required": [
|
|
3062
|
+
"op"
|
|
3063
|
+
]
|
|
3064
|
+
}
|
|
3065
|
+
},
|
|
3036
3066
|
{
|
|
3037
3067
|
"op": "menu",
|
|
3038
3068
|
"description": "Toggle the Ultimate menu button for navigation.",
|
|
@@ -3052,6 +3082,25 @@
|
|
|
3052
3082
|
]
|
|
3053
3083
|
}
|
|
3054
3084
|
},
|
|
3085
|
+
{
|
|
3086
|
+
"op": "read_menu_screen",
|
|
3087
|
+
"description": "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+).",
|
|
3088
|
+
"required": [],
|
|
3089
|
+
"optional": [],
|
|
3090
|
+
"inputSchema": {
|
|
3091
|
+
"type": "object",
|
|
3092
|
+
"description": "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+).",
|
|
3093
|
+
"properties": {
|
|
3094
|
+
"op": {
|
|
3095
|
+
"const": "read_menu_screen"
|
|
3096
|
+
}
|
|
3097
|
+
},
|
|
3098
|
+
"additionalProperties": false,
|
|
3099
|
+
"required": [
|
|
3100
|
+
"op"
|
|
3101
|
+
]
|
|
3102
|
+
}
|
|
3103
|
+
},
|
|
3055
3104
|
{
|
|
3056
3105
|
"op": "start_task",
|
|
3057
3106
|
"description": "Start a named background task that runs on an interval.",
|
|
@@ -3285,17 +3334,25 @@
|
|
|
3285
3334
|
],
|
|
3286
3335
|
"platforms": [
|
|
3287
3336
|
"c64u",
|
|
3337
|
+
"u2",
|
|
3288
3338
|
"vice"
|
|
3289
3339
|
],
|
|
3290
3340
|
"operationPlatforms": {
|
|
3291
3341
|
"pause": [
|
|
3292
|
-
"c64u"
|
|
3342
|
+
"c64u",
|
|
3343
|
+
"u2"
|
|
3293
3344
|
],
|
|
3294
3345
|
"resume": [
|
|
3295
|
-
"c64u"
|
|
3346
|
+
"c64u",
|
|
3347
|
+
"u2"
|
|
3296
3348
|
],
|
|
3297
3349
|
"menu": [
|
|
3298
|
-
"c64u"
|
|
3350
|
+
"c64u",
|
|
3351
|
+
"u2"
|
|
3352
|
+
],
|
|
3353
|
+
"read_menu_screen": [
|
|
3354
|
+
"c64u",
|
|
3355
|
+
"u2"
|
|
3299
3356
|
]
|
|
3300
3357
|
}
|
|
3301
3358
|
}
|
|
@@ -3303,7 +3360,7 @@
|
|
|
3303
3360
|
{
|
|
3304
3361
|
"name": "c64_select_backend",
|
|
3305
3362
|
"title": "Changes the active backend without restarting the MCP server and reports resulting tool availability.",
|
|
3306
|
-
"description": "Switch the active backend between C64U hardware and the VICE emulator at runtime.",
|
|
3363
|
+
"description": "Switch the active backend between C64U/U64 hardware, U2-family cartridges, and the VICE emulator at runtime.",
|
|
3307
3364
|
"inputSchema": {
|
|
3308
3365
|
"type": "object",
|
|
3309
3366
|
"properties": {
|
|
@@ -3318,6 +3375,7 @@
|
|
|
3318
3375
|
"type": "string",
|
|
3319
3376
|
"enum": [
|
|
3320
3377
|
"c64u",
|
|
3378
|
+
"u2",
|
|
3321
3379
|
"vice"
|
|
3322
3380
|
],
|
|
3323
3381
|
"description": "Backend to activate for subsequent tool calls."
|
|
@@ -3348,6 +3406,7 @@
|
|
|
3348
3406
|
"type": "string",
|
|
3349
3407
|
"enum": [
|
|
3350
3408
|
"c64u",
|
|
3409
|
+
"u2",
|
|
3351
3410
|
"vice"
|
|
3352
3411
|
],
|
|
3353
3412
|
"description": "Backend to activate for subsequent tool calls."
|
|
@@ -3392,6 +3451,7 @@
|
|
|
3392
3451
|
],
|
|
3393
3452
|
"platforms": [
|
|
3394
3453
|
"c64u",
|
|
3454
|
+
"u2",
|
|
3395
3455
|
"vice"
|
|
3396
3456
|
]
|
|
3397
3457
|
}
|
|
@@ -3631,7 +3691,7 @@
|
|
|
3631
3691
|
"required": [
|
|
3632
3692
|
"op"
|
|
3633
3693
|
],
|
|
3634
|
-
"description": "Graphics operations available via the c64_graphics tool.\n\nOperations:\n- capture_frame: Capture one or more complete video frames from the active backend. Required inputs: none. Optional inputs: count, includePixels, encoding.\n- render_petscii_art: Create PETSCII art from prompts, text, or explicit bitmap data, and optionally display it on the C64. Required inputs: none. Optional inputs: prompt, text, maxWidth, maxHeight, borderColor, backgroundColor, foregroundColor, dryRun, bitmap.\n- render_petscii_text: Display PETSCII text with optional border and background colours. Required inputs: text. Optional inputs: borderColor, backgroundColor.\n- render_sprite: Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. Required inputs: sprite. Optional inputs: index, x, y, color, multicolour.\n- render_bitmap: Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. Required inputs: imagePath, format. Optional inputs: bitmapAddress, screenAddress, borderColor, backgroundColor, preserveAspect.\n- get_display_state: Read VIC-II and CIA2 registers to determine the current graphics mode and memory layout.
|
|
3694
|
+
"description": "Graphics operations available via the c64_graphics tool.\n\nOperations:\n- capture_frame: Capture one or more complete video frames from the active backend. Required inputs: none. Optional inputs: count, includePixels, encoding.\n- render_petscii_art: Create PETSCII art from prompts, text, or explicit bitmap data, and optionally display it on the C64. Required inputs: none. Optional inputs: prompt, text, maxWidth, maxHeight, borderColor, backgroundColor, foregroundColor, dryRun, bitmap.\n- render_petscii_text: Display PETSCII text with optional border and background colours. Required inputs: text. Optional inputs: borderColor, backgroundColor.\n- render_sprite: Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. Required inputs: sprite. Optional inputs: index, x, y, color, multicolour.\n- render_bitmap: Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. Required inputs: imagePath, format. Optional inputs: bitmapAddress, screenAddress, borderColor, backgroundColor, preserveAspect.\n- 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. Required inputs: none.",
|
|
3635
3695
|
"additionalProperties": false,
|
|
3636
3696
|
"x-c64bridge-operations": [
|
|
3637
3697
|
{
|
|
@@ -4026,12 +4086,12 @@
|
|
|
4026
4086
|
},
|
|
4027
4087
|
{
|
|
4028
4088
|
"op": "get_display_state",
|
|
4029
|
-
"description": "Read VIC-II and CIA2 registers to determine the current graphics mode and memory layout.
|
|
4089
|
+
"description": "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.",
|
|
4030
4090
|
"required": [],
|
|
4031
4091
|
"optional": [],
|
|
4032
4092
|
"inputSchema": {
|
|
4033
4093
|
"type": "object",
|
|
4034
|
-
"description": "Read VIC-II and CIA2 registers to determine the current graphics mode and memory layout.
|
|
4094
|
+
"description": "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.",
|
|
4035
4095
|
"properties": {
|
|
4036
4096
|
"op": {
|
|
4037
4097
|
"const": "get_display_state"
|
|
@@ -4121,6 +4181,7 @@
|
|
|
4121
4181
|
],
|
|
4122
4182
|
"platforms": [
|
|
4123
4183
|
"c64u",
|
|
4184
|
+
"u2",
|
|
4124
4185
|
"vice"
|
|
4125
4186
|
]
|
|
4126
4187
|
}
|
|
@@ -4285,6 +4346,7 @@
|
|
|
4285
4346
|
],
|
|
4286
4347
|
"platforms": [
|
|
4287
4348
|
"c64u",
|
|
4349
|
+
"u2",
|
|
4288
4350
|
"vice"
|
|
4289
4351
|
]
|
|
4290
4352
|
}
|
|
@@ -4876,17 +4938,21 @@
|
|
|
4876
4938
|
],
|
|
4877
4939
|
"platforms": [
|
|
4878
4940
|
"c64u",
|
|
4941
|
+
"u2",
|
|
4879
4942
|
"vice"
|
|
4880
4943
|
],
|
|
4881
4944
|
"operationPlatforms": {
|
|
4882
4945
|
"file_info": [
|
|
4883
|
-
"c64u"
|
|
4946
|
+
"c64u",
|
|
4947
|
+
"u2"
|
|
4884
4948
|
],
|
|
4885
4949
|
"create_image": [
|
|
4886
|
-
"c64u"
|
|
4950
|
+
"c64u",
|
|
4951
|
+
"u2"
|
|
4887
4952
|
],
|
|
4888
4953
|
"find_and_run": [
|
|
4889
|
-
"c64u"
|
|
4954
|
+
"c64u",
|
|
4955
|
+
"u2"
|
|
4890
4956
|
]
|
|
4891
4957
|
}
|
|
4892
4958
|
}
|
|
@@ -5128,11 +5194,13 @@
|
|
|
5128
5194
|
],
|
|
5129
5195
|
"platforms": [
|
|
5130
5196
|
"c64u",
|
|
5197
|
+
"u2",
|
|
5131
5198
|
"vice"
|
|
5132
5199
|
],
|
|
5133
5200
|
"operationPlatforms": {
|
|
5134
5201
|
"load_rom": [
|
|
5135
|
-
"c64u"
|
|
5202
|
+
"c64u",
|
|
5203
|
+
"u2"
|
|
5136
5204
|
]
|
|
5137
5205
|
}
|
|
5138
5206
|
}
|
|
@@ -6250,17 +6318,21 @@
|
|
|
6250
6318
|
],
|
|
6251
6319
|
"platforms": [
|
|
6252
6320
|
"c64u",
|
|
6321
|
+
"u2",
|
|
6253
6322
|
"vice"
|
|
6254
6323
|
],
|
|
6255
6324
|
"operationPlatforms": {
|
|
6256
6325
|
"load_flash": [
|
|
6257
|
-
"c64u"
|
|
6326
|
+
"c64u",
|
|
6327
|
+
"u2"
|
|
6258
6328
|
],
|
|
6259
6329
|
"save_flash": [
|
|
6260
|
-
"c64u"
|
|
6330
|
+
"c64u",
|
|
6331
|
+
"u2"
|
|
6261
6332
|
],
|
|
6262
6333
|
"reset_defaults": [
|
|
6263
|
-
"c64u"
|
|
6334
|
+
"c64u",
|
|
6335
|
+
"u2"
|
|
6264
6336
|
],
|
|
6265
6337
|
"read_debugreg": [
|
|
6266
6338
|
"c64u"
|
|
@@ -6269,7 +6341,8 @@
|
|
|
6269
6341
|
"c64u"
|
|
6270
6342
|
],
|
|
6271
6343
|
"shuffle": [
|
|
6272
|
-
"c64u"
|
|
6344
|
+
"c64u",
|
|
6345
|
+
"u2"
|
|
6273
6346
|
]
|
|
6274
6347
|
}
|
|
6275
6348
|
}
|
|
@@ -8121,8 +8194,8 @@
|
|
|
8121
8194
|
},
|
|
8122
8195
|
{
|
|
8123
8196
|
"name": "c64_input",
|
|
8124
|
-
"title": "Types text,
|
|
8125
|
-
"description": "
|
|
8197
|
+
"title": "Types text, sends physical key combinations, and controls joysticks.",
|
|
8198
|
+
"description": "Cross-platform PETSCII typing plus native Ultimate keyboard and joystick events.",
|
|
8126
8199
|
"inputSchema": {
|
|
8127
8200
|
"type": "object",
|
|
8128
8201
|
"properties": {
|
|
@@ -8131,7 +8204,10 @@
|
|
|
8131
8204
|
"enum": [
|
|
8132
8205
|
"write_text",
|
|
8133
8206
|
"key",
|
|
8134
|
-
"joystick"
|
|
8207
|
+
"joystick",
|
|
8208
|
+
"keyboard",
|
|
8209
|
+
"release_all",
|
|
8210
|
+
"state"
|
|
8135
8211
|
],
|
|
8136
8212
|
"description": "Selects the operation."
|
|
8137
8213
|
},
|
|
@@ -8194,7 +8270,9 @@
|
|
|
8194
8270
|
"down",
|
|
8195
8271
|
"left",
|
|
8196
8272
|
"right",
|
|
8197
|
-
"fire"
|
|
8273
|
+
"fire",
|
|
8274
|
+
"fire2",
|
|
8275
|
+
"fire3"
|
|
8198
8276
|
]
|
|
8199
8277
|
},
|
|
8200
8278
|
"minItems": 0
|
|
@@ -8207,12 +8285,98 @@
|
|
|
8207
8285
|
"release",
|
|
8208
8286
|
"tap"
|
|
8209
8287
|
]
|
|
8288
|
+
},
|
|
8289
|
+
"inputs": {
|
|
8290
|
+
"type": "array",
|
|
8291
|
+
"description": "One or more keys to transition together (for example left_shift + a).",
|
|
8292
|
+
"items": {
|
|
8293
|
+
"type": "string",
|
|
8294
|
+
"description": "Physical keyboard input.",
|
|
8295
|
+
"enum": [
|
|
8296
|
+
"inst_del",
|
|
8297
|
+
"return",
|
|
8298
|
+
"cursor_left_right",
|
|
8299
|
+
"f7",
|
|
8300
|
+
"f1",
|
|
8301
|
+
"f3",
|
|
8302
|
+
"f5",
|
|
8303
|
+
"cursor_up_down",
|
|
8304
|
+
"0",
|
|
8305
|
+
"1",
|
|
8306
|
+
"2",
|
|
8307
|
+
"3",
|
|
8308
|
+
"4",
|
|
8309
|
+
"5",
|
|
8310
|
+
"6",
|
|
8311
|
+
"7",
|
|
8312
|
+
"8",
|
|
8313
|
+
"9",
|
|
8314
|
+
"a",
|
|
8315
|
+
"b",
|
|
8316
|
+
"c",
|
|
8317
|
+
"d",
|
|
8318
|
+
"e",
|
|
8319
|
+
"f",
|
|
8320
|
+
"g",
|
|
8321
|
+
"h",
|
|
8322
|
+
"i",
|
|
8323
|
+
"j",
|
|
8324
|
+
"k",
|
|
8325
|
+
"l",
|
|
8326
|
+
"m",
|
|
8327
|
+
"n",
|
|
8328
|
+
"o",
|
|
8329
|
+
"p",
|
|
8330
|
+
"q",
|
|
8331
|
+
"r",
|
|
8332
|
+
"s",
|
|
8333
|
+
"t",
|
|
8334
|
+
"u",
|
|
8335
|
+
"v",
|
|
8336
|
+
"w",
|
|
8337
|
+
"x",
|
|
8338
|
+
"y",
|
|
8339
|
+
"z",
|
|
8340
|
+
"left_shift",
|
|
8341
|
+
"right_shift",
|
|
8342
|
+
"plus",
|
|
8343
|
+
"minus",
|
|
8344
|
+
"period",
|
|
8345
|
+
"colon",
|
|
8346
|
+
"at",
|
|
8347
|
+
"comma",
|
|
8348
|
+
"pound",
|
|
8349
|
+
"star",
|
|
8350
|
+
"semicolon",
|
|
8351
|
+
"clr_home",
|
|
8352
|
+
"equals",
|
|
8353
|
+
"arrow_up",
|
|
8354
|
+
"slash",
|
|
8355
|
+
"arrow_left",
|
|
8356
|
+
"ctrl",
|
|
8357
|
+
"space",
|
|
8358
|
+
"commodore",
|
|
8359
|
+
"run_stop",
|
|
8360
|
+
"restore"
|
|
8361
|
+
]
|
|
8362
|
+
},
|
|
8363
|
+
"minItems": 1,
|
|
8364
|
+
"maxItems": 8
|
|
8365
|
+
},
|
|
8366
|
+
"transition": {
|
|
8367
|
+
"type": "string",
|
|
8368
|
+
"description": "press holds, release frees, tap presses and releases.",
|
|
8369
|
+
"enum": [
|
|
8370
|
+
"press",
|
|
8371
|
+
"release",
|
|
8372
|
+
"tap"
|
|
8373
|
+
]
|
|
8210
8374
|
}
|
|
8211
8375
|
},
|
|
8212
8376
|
"required": [
|
|
8213
8377
|
"op"
|
|
8214
8378
|
],
|
|
8215
|
-
"description": "Input operations: write_text, key, joystick.\n\nOperations:\n- write_text: Send a text string to the keyboard buffer, with PETSCII token expansion. Required inputs: text. Optional inputs: delayMs.\n- key: Tap a single key or hold it for a duration. Required inputs: key. Optional inputs: durationMs, count.\n- joystick: Simulate joystick input
|
|
8379
|
+
"description": "Input operations: write_text, key, keyboard, joystick, release_all, state.\n\nOperations:\n- write_text: Send a text string to the keyboard buffer, with PETSCII token expansion. Required inputs: text. Optional inputs: delayMs.\n- key: Tap a single key or hold it for a duration. Required inputs: key. Optional inputs: durationMs, count.\n- 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. Required inputs: port, controls, action. Optional inputs: durationMs.\n- keyboard: Send physical C64 keyboard matrix events through machine:input (a C64U firmware version that provides it, or U64 3.15+). Required inputs: inputs, transition.\n- release_all: Release every key and joystick control injected through machine:input (a C64U firmware version that provides it, or U64 3.15+). Required inputs: none.\n- state: Read the keys and joystick controls held through machine:input (a C64U firmware version that provides it, or U64 3.15+). Required inputs: none.",
|
|
8216
8380
|
"additionalProperties": false,
|
|
8217
8381
|
"x-c64bridge-operations": [
|
|
8218
8382
|
{
|
|
@@ -8308,7 +8472,7 @@
|
|
|
8308
8472
|
},
|
|
8309
8473
|
{
|
|
8310
8474
|
"op": "joystick",
|
|
8311
|
-
"description": "Simulate joystick input
|
|
8475
|
+
"description": "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.",
|
|
8312
8476
|
"required": [
|
|
8313
8477
|
"port",
|
|
8314
8478
|
"controls",
|
|
@@ -8319,7 +8483,7 @@
|
|
|
8319
8483
|
],
|
|
8320
8484
|
"inputSchema": {
|
|
8321
8485
|
"type": "object",
|
|
8322
|
-
"description": "Simulate joystick input
|
|
8486
|
+
"description": "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.",
|
|
8323
8487
|
"properties": {
|
|
8324
8488
|
"op": {
|
|
8325
8489
|
"const": "joystick"
|
|
@@ -8341,7 +8505,9 @@
|
|
|
8341
8505
|
"down",
|
|
8342
8506
|
"left",
|
|
8343
8507
|
"right",
|
|
8344
|
-
"fire"
|
|
8508
|
+
"fire",
|
|
8509
|
+
"fire2",
|
|
8510
|
+
"fire3"
|
|
8345
8511
|
]
|
|
8346
8512
|
},
|
|
8347
8513
|
"minItems": 0
|
|
@@ -8374,12 +8540,160 @@
|
|
|
8374
8540
|
],
|
|
8375
8541
|
"additionalProperties": false
|
|
8376
8542
|
}
|
|
8543
|
+
},
|
|
8544
|
+
{
|
|
8545
|
+
"op": "keyboard",
|
|
8546
|
+
"description": "Send physical C64 keyboard matrix events through machine:input (a C64U firmware version that provides it, or U64 3.15+).",
|
|
8547
|
+
"required": [
|
|
8548
|
+
"inputs",
|
|
8549
|
+
"transition"
|
|
8550
|
+
],
|
|
8551
|
+
"optional": [],
|
|
8552
|
+
"inputSchema": {
|
|
8553
|
+
"type": "object",
|
|
8554
|
+
"description": "Send physical C64 keyboard matrix events through machine:input (a C64U firmware version that provides it, or U64 3.15+).",
|
|
8555
|
+
"properties": {
|
|
8556
|
+
"op": {
|
|
8557
|
+
"const": "keyboard"
|
|
8558
|
+
},
|
|
8559
|
+
"inputs": {
|
|
8560
|
+
"type": "array",
|
|
8561
|
+
"description": "One or more keys to transition together (for example left_shift + a).",
|
|
8562
|
+
"items": {
|
|
8563
|
+
"type": "string",
|
|
8564
|
+
"description": "Physical keyboard input.",
|
|
8565
|
+
"enum": [
|
|
8566
|
+
"inst_del",
|
|
8567
|
+
"return",
|
|
8568
|
+
"cursor_left_right",
|
|
8569
|
+
"f7",
|
|
8570
|
+
"f1",
|
|
8571
|
+
"f3",
|
|
8572
|
+
"f5",
|
|
8573
|
+
"cursor_up_down",
|
|
8574
|
+
"0",
|
|
8575
|
+
"1",
|
|
8576
|
+
"2",
|
|
8577
|
+
"3",
|
|
8578
|
+
"4",
|
|
8579
|
+
"5",
|
|
8580
|
+
"6",
|
|
8581
|
+
"7",
|
|
8582
|
+
"8",
|
|
8583
|
+
"9",
|
|
8584
|
+
"a",
|
|
8585
|
+
"b",
|
|
8586
|
+
"c",
|
|
8587
|
+
"d",
|
|
8588
|
+
"e",
|
|
8589
|
+
"f",
|
|
8590
|
+
"g",
|
|
8591
|
+
"h",
|
|
8592
|
+
"i",
|
|
8593
|
+
"j",
|
|
8594
|
+
"k",
|
|
8595
|
+
"l",
|
|
8596
|
+
"m",
|
|
8597
|
+
"n",
|
|
8598
|
+
"o",
|
|
8599
|
+
"p",
|
|
8600
|
+
"q",
|
|
8601
|
+
"r",
|
|
8602
|
+
"s",
|
|
8603
|
+
"t",
|
|
8604
|
+
"u",
|
|
8605
|
+
"v",
|
|
8606
|
+
"w",
|
|
8607
|
+
"x",
|
|
8608
|
+
"y",
|
|
8609
|
+
"z",
|
|
8610
|
+
"left_shift",
|
|
8611
|
+
"right_shift",
|
|
8612
|
+
"plus",
|
|
8613
|
+
"minus",
|
|
8614
|
+
"period",
|
|
8615
|
+
"colon",
|
|
8616
|
+
"at",
|
|
8617
|
+
"comma",
|
|
8618
|
+
"pound",
|
|
8619
|
+
"star",
|
|
8620
|
+
"semicolon",
|
|
8621
|
+
"clr_home",
|
|
8622
|
+
"equals",
|
|
8623
|
+
"arrow_up",
|
|
8624
|
+
"slash",
|
|
8625
|
+
"arrow_left",
|
|
8626
|
+
"ctrl",
|
|
8627
|
+
"space",
|
|
8628
|
+
"commodore",
|
|
8629
|
+
"run_stop",
|
|
8630
|
+
"restore"
|
|
8631
|
+
]
|
|
8632
|
+
},
|
|
8633
|
+
"minItems": 1,
|
|
8634
|
+
"maxItems": 8
|
|
8635
|
+
},
|
|
8636
|
+
"transition": {
|
|
8637
|
+
"type": "string",
|
|
8638
|
+
"description": "press holds, release frees, tap presses and releases.",
|
|
8639
|
+
"enum": [
|
|
8640
|
+
"press",
|
|
8641
|
+
"release",
|
|
8642
|
+
"tap"
|
|
8643
|
+
]
|
|
8644
|
+
}
|
|
8645
|
+
},
|
|
8646
|
+
"required": [
|
|
8647
|
+
"op",
|
|
8648
|
+
"inputs",
|
|
8649
|
+
"transition"
|
|
8650
|
+
],
|
|
8651
|
+
"additionalProperties": false
|
|
8652
|
+
}
|
|
8653
|
+
},
|
|
8654
|
+
{
|
|
8655
|
+
"op": "release_all",
|
|
8656
|
+
"description": "Release every key and joystick control injected through machine:input (a C64U firmware version that provides it, or U64 3.15+).",
|
|
8657
|
+
"required": [],
|
|
8658
|
+
"optional": [],
|
|
8659
|
+
"inputSchema": {
|
|
8660
|
+
"type": "object",
|
|
8661
|
+
"description": "Release every key and joystick control injected through machine:input (a C64U firmware version that provides it, or U64 3.15+).",
|
|
8662
|
+
"properties": {
|
|
8663
|
+
"op": {
|
|
8664
|
+
"const": "release_all"
|
|
8665
|
+
}
|
|
8666
|
+
},
|
|
8667
|
+
"required": [
|
|
8668
|
+
"op"
|
|
8669
|
+
],
|
|
8670
|
+
"additionalProperties": false
|
|
8671
|
+
}
|
|
8672
|
+
},
|
|
8673
|
+
{
|
|
8674
|
+
"op": "state",
|
|
8675
|
+
"description": "Read the keys and joystick controls held through machine:input (a C64U firmware version that provides it, or U64 3.15+).",
|
|
8676
|
+
"required": [],
|
|
8677
|
+
"optional": [],
|
|
8678
|
+
"inputSchema": {
|
|
8679
|
+
"type": "object",
|
|
8680
|
+
"description": "Read the keys and joystick controls held through machine:input (a C64U firmware version that provides it, or U64 3.15+).",
|
|
8681
|
+
"properties": {
|
|
8682
|
+
"op": {
|
|
8683
|
+
"const": "state"
|
|
8684
|
+
}
|
|
8685
|
+
},
|
|
8686
|
+
"required": [
|
|
8687
|
+
"op"
|
|
8688
|
+
],
|
|
8689
|
+
"additionalProperties": false
|
|
8690
|
+
}
|
|
8377
8691
|
}
|
|
8378
8692
|
]
|
|
8379
8693
|
},
|
|
8380
8694
|
"_meta": {
|
|
8381
8695
|
"domain": "input",
|
|
8382
|
-
"summary": "Types text,
|
|
8696
|
+
"summary": "Types text, sends physical key combinations, and controls joysticks.",
|
|
8383
8697
|
"lifecycle": "request-response",
|
|
8384
8698
|
"resources": [
|
|
8385
8699
|
"c64://guide/bootstrap",
|
|
@@ -8417,6 +8731,18 @@
|
|
|
8417
8731
|
"durationMs": 80
|
|
8418
8732
|
}
|
|
8419
8733
|
},
|
|
8734
|
+
{
|
|
8735
|
+
"name": "Type an uppercase A",
|
|
8736
|
+
"description": "Tap a physical key chord through Ultimate REST input",
|
|
8737
|
+
"arguments": {
|
|
8738
|
+
"op": "keyboard",
|
|
8739
|
+
"inputs": [
|
|
8740
|
+
"left_shift",
|
|
8741
|
+
"a"
|
|
8742
|
+
],
|
|
8743
|
+
"transition": "tap"
|
|
8744
|
+
}
|
|
8745
|
+
},
|
|
8420
8746
|
{
|
|
8421
8747
|
"name": "Press fire on port 1",
|
|
8422
8748
|
"description": "Hold fire button on joystick port 1",
|
|
@@ -8436,17 +8762,31 @@
|
|
|
8436
8762
|
"joystick"
|
|
8437
8763
|
],
|
|
8438
8764
|
"workflowHints": [
|
|
8439
|
-
"Use write_text with {RETURN} tokens to automate BASIC entry;
|
|
8765
|
+
"Use write_text with {RETURN} tokens to automate BASIC entry; use key for one PETSCII/KERNAL queue key. Neither is for navigating Ultimate firmware menus.",
|
|
8440
8766
|
"write_text and key inject through the KERNAL keyboard queue ($0277/$00C6) so they work on both C64U and VICE.",
|
|
8441
|
-
"
|
|
8767
|
+
"Use keyboard for physical C64 key combinations (including modifiers) on machine:input, and release_all to recover from interrupted holds. It requires a C64U firmware version that provides the endpoint, or U64 3.15+.",
|
|
8768
|
+
"Before native input, read c64://platform/status. If machine:input is unavailable or unknown, use key or write_text for ordinary C64 input instead of attempting physical matrix events.",
|
|
8769
|
+
"Change C64U/U64/U2 configuration through c64_config REST operations, never by keyboard menu navigation. Use keyboard navigation only where REST has no equivalent, such as the machine code monitor, visual SID editor, or Tool Menu.",
|
|
8770
|
+
"Joystick uses machine:input on a C64U firmware version that provides the endpoint or U64 3.15+; VICE supports up/down/left/right/fire through its monitor."
|
|
8442
8771
|
],
|
|
8443
8772
|
"platforms": [
|
|
8444
8773
|
"c64u",
|
|
8774
|
+
"u2",
|
|
8445
8775
|
"vice"
|
|
8446
8776
|
],
|
|
8447
8777
|
"operationPlatforms": {
|
|
8448
8778
|
"joystick": [
|
|
8779
|
+
"c64u",
|
|
8449
8780
|
"vice"
|
|
8781
|
+
],
|
|
8782
|
+
"keyboard": [
|
|
8783
|
+
"c64u"
|
|
8784
|
+
],
|
|
8785
|
+
"release_all": [
|
|
8786
|
+
"c64u"
|
|
8787
|
+
],
|
|
8788
|
+
"state": [
|
|
8789
|
+
"c64u"
|
|
8450
8790
|
]
|
|
8451
8791
|
}
|
|
8452
8792
|
}
|
|
@@ -8581,6 +8921,7 @@
|
|
|
8581
8921
|
],
|
|
8582
8922
|
"platforms": [
|
|
8583
8923
|
"c64u",
|
|
8924
|
+
"u2",
|
|
8584
8925
|
"vice"
|
|
8585
8926
|
]
|
|
8586
8927
|
}
|