@henols/vice-mcp 0.1.10 → 0.1.12
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 +15 -0
- package/THIRD-PARTY-NOTICES.md +113 -0
- package/backend-detect.mts +595 -0
- package/build.ts +1 -0
- package/disasm-decoder.ts +272 -0
- package/disasm-opcodes.ts +464 -0
- package/disasm-renderer.ts +306 -0
- package/package.json +27 -2
- package/refresh-manifest.ts +23 -2
- package/resources/backend-detect.mjs +396 -0
- package/resources/broker-control.mjs +110 -8
- package/resources/broker-kill.mjs +114 -103
- package/resources/broker-launch.mjs +334 -19
- package/resources/broker-state.mjs +11 -0
- package/resources/vice-broker.mjs +185 -14
- package/stock-address.ts +219 -0
- package/stock-checkpoints.ts +794 -0
- package/stock-condition.ts +636 -0
- package/stock-connect.ts +427 -0
- package/stock-derived.ts +122 -0
- package/stock-disassemble.ts +252 -0
- package/stock-dispatch.ts +640 -0
- package/stock-execution.ts +327 -0
- package/stock-handler.ts +175 -0
- package/stock-input.ts +274 -0
- package/stock-machine.ts +357 -0
- package/stock-memory.ts +323 -0
- package/stock-paths.ts +191 -0
- package/stock-petscii.ts +143 -0
- package/stock-protocol.ts +2057 -0
- package/stock-registers.ts +324 -0
- package/stock-runstate.ts +104 -0
- package/tools-manifest.json +1 -9
- package/tools-manifest.stock.json +841 -0
- package/vice-broker-client.ts +233 -7
- package/vice-proxy.ts +202 -17
package/README.md
CHANGED
|
@@ -53,10 +53,25 @@ VICE MCP server.
|
|
|
53
53
|
|
|
54
54
|
## Development
|
|
55
55
|
|
|
56
|
+
`npm test` assumes it is running inside the devcontainer. On a bare host, set
|
|
57
|
+
`CONTAINER_WORKSPACE_PATH` (the repo root) and `HOST_WORKSPACE_PATH` (any
|
|
58
|
+
consistent host-side mirror) exactly as `.github/workflows/ci.yml` does, or
|
|
59
|
+
the path-translation and container-guard tests skip with a reason naming
|
|
60
|
+
both variables instead of running:
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
export CONTAINER_WORKSPACE_PATH="$(git rev-parse --show-toplevel)"
|
|
64
|
+
export HOST_WORKSPACE_PATH="/host$(git rev-parse --show-toplevel)"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`npm run test:automated` is the subset of `npm test` that excludes the three
|
|
68
|
+
manual-only files (see `test-gate.mjs`'s own header).
|
|
69
|
+
|
|
56
70
|
```sh
|
|
57
71
|
npm ci
|
|
58
72
|
npm run typecheck
|
|
59
73
|
npm test
|
|
74
|
+
npm run test:automated # the automated subset (excludes manual-only files)
|
|
60
75
|
npm run smoke # boots the server and completes an MCP initialize + tools/list handshake
|
|
61
76
|
npm run build # recompiles the host-bound .mts launchers into resources/
|
|
62
77
|
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Third-Party Notices for `@henols/vice-mcp`
|
|
2
|
+
|
|
3
|
+
This package is MIT-licensed (see `LICENSE` at the repository root, copyright
|
|
4
|
+
Henrik Olsson). This file lists third-party material incorporated into, or
|
|
5
|
+
relied on by, `@henols/vice-mcp`, with a provenance line per source.
|
|
6
|
+
|
|
7
|
+
**No GPL-licensed material is incorporated into this package: no GPL-licensed material appears anywhere in `@henols/vice-mcp`'s source or its published tarball.** Every source named below is either zlib-licensed (incorporated), reference-only (nothing copied), or a build/test-time subprocess whose licence therefore never attaches to anything shipped.
|
|
8
|
+
|
|
9
|
+
## Incorporated material — cc65 (zlib)
|
|
10
|
+
|
|
11
|
+
The 6502/6510 opcode table in `disasm-opcodes.ts` (mnemonics, addressing
|
|
12
|
+
modes, instruction lengths) is transcribed by hand from cc65's
|
|
13
|
+
`src/da65/opc6502x.c`, fetched raw
|
|
14
|
+
(`https://raw.githubusercontent.com/cc65/cc65/master/src/da65/opc6502x.c`)
|
|
15
|
+
against `master` @ commit `547d923588d870aacf0b0016c67d0f6a92a70f83`
|
|
16
|
+
(2026-07-11). The table itself was last touched upstream at commit
|
|
17
|
+
`02e79d35d73efd31522b5eab986d1919e3560bba` (2025-06-19, "making da65 produce
|
|
18
|
+
the same mnemonics as ca65 uses"). This is the only incorporated third-party
|
|
19
|
+
material the disassembler carries — the derived-data files
|
|
20
|
+
(`disasm-decoder.ts`, `disasm-renderer.ts`, `stock-disassemble.ts`) contain no
|
|
21
|
+
further transcribed material of their own.
|
|
22
|
+
|
|
23
|
+
cc65 is zlib-licensed, copyright cc65's own author:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
(C) 2003-2011, Ullrich von Bassewitz
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Full zlib licence text, reproduced below, satisfies the origin-must-not-be-
|
|
30
|
+
misrepresented and altered-versions-must-be-marked obligations for this
|
|
31
|
+
transcription (see `disasm-opcodes.ts`'s own header comment for the
|
|
32
|
+
attribution as it appears in-source):
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
This software is provided 'as-is', without any express or implied
|
|
36
|
+
warranty. In no event will the authors be held liable for any damages
|
|
37
|
+
arising from the use of this software.
|
|
38
|
+
|
|
39
|
+
Permission is granted to anyone to use this software for any purpose,
|
|
40
|
+
including commercial applications, and to alter it and redistribute it
|
|
41
|
+
freely, subject to the following restrictions:
|
|
42
|
+
|
|
43
|
+
1. The origin of this software must not be misrepresented; you must not
|
|
44
|
+
claim that you wrote the original software. If you use this software
|
|
45
|
+
in a product, an acknowledgment in the product documentation would be
|
|
46
|
+
appreciated but is not required.
|
|
47
|
+
|
|
48
|
+
2. Altered source versions must be plainly marked as such, and must not be
|
|
49
|
+
misrepresented as being the original software.
|
|
50
|
+
|
|
51
|
+
3. This notice may not be removed or altered from any source distribution.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Reference-only cross-checks (no code or data taken)
|
|
55
|
+
|
|
56
|
+
masswerk.at's 6502 instruction-set reference
|
|
57
|
+
(https://www.masswerk.at/6502/6502_instruction_set.html) and
|
|
58
|
+
www.oxyron.de/html/opcodes02.html were consulted to cross-check the
|
|
59
|
+
illegal-opcode addressing modes, the 27-opcode NOP class (across 6
|
|
60
|
+
addressing-mode groups), the 12 JAM opcodes, and the NMOS `JMP ($xxFF)`
|
|
61
|
+
page-wrap behaviour. **Nothing was copied from either site** — both are
|
|
62
|
+
cited here as verification aids only, and the table's actual independent
|
|
63
|
+
cross-check is `disasm-opcodes.test.ts`'s bit-pattern derivation test plus
|
|
64
|
+
`disasm-roundtrip.test.ts`'s byte-exact real-ACME round-trip.
|
|
65
|
+
|
|
66
|
+
## Build/CI tools — not incorporated
|
|
67
|
+
|
|
68
|
+
The ACME cross-assembler (GPL) is invoked as a **subprocess in tests only**
|
|
69
|
+
(`disasm-roundtrip.test.ts`), against a real, locally- or CI-installed ACME
|
|
70
|
+
binary (verified as release `0.97 ("Zem")`, 31 Jan 2021, by 04-06's own
|
|
71
|
+
availability gate; CI installs it via `apt-get install -y acme` in
|
|
72
|
+
`.github/workflows/ci.yml`'s `build` job). **No ACME source, header, data
|
|
73
|
+
table or output is included in this repository or in the published
|
|
74
|
+
package**, so ACME's licence does not attach to anything shipped. ACME never
|
|
75
|
+
appears in `.claude/mcp/vice/package.json`'s `files[]`, `dependencies`, or
|
|
76
|
+
`devDependencies` — it is an apt/CI-installed tool, never an npm package.
|
|
77
|
+
|
|
78
|
+
## Explicitly NOT a source: VICE
|
|
79
|
+
|
|
80
|
+
VICE is GPL-2 and this repository is MIT. **No opcode fact, protocol
|
|
81
|
+
constant, or line of code in this repository is sourced from VICE's own
|
|
82
|
+
source tree.** The stock backend is built against the binary-monitor
|
|
83
|
+
**protocol** as documented in `docs/phase0-binmon-findings.md`, derived from
|
|
84
|
+
independent probing against a running VICE binary, never from reading VICE's
|
|
85
|
+
own C source.
|
|
86
|
+
|
|
87
|
+
## Explicitly NOT a source: `fluffy-6502`
|
|
88
|
+
|
|
89
|
+
`fluffy-6502`, named in `.planning/ROADMAP.md` and in 04-CONTEXT.md D-06 as an
|
|
90
|
+
MIT cross-check source, **could not be located under that name** on GitHub or
|
|
91
|
+
the general web during Phase 4 research (`04-RESEARCH.md` Assumptions Log
|
|
92
|
+
A1 / Pitfall 5). It was therefore **not used and is not cited** as a source
|
|
93
|
+
of this table — a notices entry naming a project whose URL 404s would
|
|
94
|
+
overstate what was actually checked. The opcode table's independent
|
|
95
|
+
verification instead comes from `disasm-opcodes.test.ts`'s `aaabbbcc`
|
|
96
|
+
bit-pattern derivation test and `disasm-roundtrip.test.ts`'s byte-exact
|
|
97
|
+
real-ACME round-trip — both stronger checks than a second static table would
|
|
98
|
+
have been.
|
|
99
|
+
|
|
100
|
+
## Existing runtime dependencies
|
|
101
|
+
|
|
102
|
+
`@henols/vice-mcp`'s only two runtime dependencies, unchanged by Phase 4:
|
|
103
|
+
|
|
104
|
+
- **`@mastra/mcp`** (`1.15.0`) — MCP server/tooling framework. See its own
|
|
105
|
+
package licence (MIT) on the npm registry.
|
|
106
|
+
- **`@mastra/core`** (`1.55.0`) — underlying Mastra runtime `@mastra/mcp`
|
|
107
|
+
depends on. See its own package licence (MIT) on the npm registry.
|
|
108
|
+
|
|
109
|
+
No new runtime dependency was added by the disassembler (`disasm-opcodes.ts`,
|
|
110
|
+
`disasm-decoder.ts`, `disasm-renderer.ts`, `stock-disassemble.ts` import only
|
|
111
|
+
this package's own sibling modules and Node built-ins). This is a checkable
|
|
112
|
+
claim, not a prose one: `scripts/check-npm-packages.mjs` asserts the packed
|
|
113
|
+
tarball's runtime `dependencies` are exactly these two, by key set and count.
|