@henols/c64-re-tools 2.0.1 → 2.1.0-rc.2
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 +8 -4
- package/package.json +1 -1
- package/skills/c64-assembler/SKILL.md +24 -9
- package/skills/c64-assembler/scripts/assembler.ts +95 -0
- package/skills/c64-basic/SKILL.md +17 -9
- package/skills/c64-basic/scripts/basic.ts +26 -36
- package/skills/c64-disk/SKILL.md +17 -7
- package/skills/c64-disk/scripts/disk.ts +130 -104
- package/skills/c64-disk/scripts/lib/containers.ts +10 -12
- package/skills/c64-docs/SKILL.md +47 -28
- package/skills/c64-docs/references/style.md +6 -6
- package/skills/c64-docs/scripts/docs.ts +323 -0
- package/skills/c64-docs/scripts/lib/source-map.ts +1 -1
- package/skills/c64-emulator/SKILL.md +11 -7
- package/skills/c64-knowledge/SKILL.md +34 -21
- package/skills/c64-knowledge/scripts/knowledge.ts +597 -718
- package/skills/c64-knowledge/scripts/lib/listing.ts +5 -7
- package/skills/c64-memory-map/SKILL.md +18 -10
- package/skills/c64-memory-map/scripts/memory-map.ts +81 -0
- package/skills/c64-provenance/SKILL.md +82 -26
- package/skills/c64-provenance/scripts/lib/compare.ts +8 -12
- package/skills/c64-provenance/scripts/lib/leftovers.ts +442 -0
- package/skills/c64-provenance/scripts/lib/library.ts +15 -25
- package/skills/c64-provenance/scripts/lib/runtime.ts +12 -37
- package/skills/c64-provenance/scripts/lib/separate.ts +9 -10
- package/skills/c64-provenance/scripts/provenance.ts +222 -252
- package/skills/c64-reverse-engineering/SKILL.md +18 -15
- package/skills/c64-source/SKILL.md +28 -16
- package/skills/c64-source/scripts/lib/loader.ts +52 -77
- package/skills/c64-source/scripts/lib/source.ts +33 -42
- package/skills/c64-source/scripts/{generate.ts → source.ts} +68 -109
- package/skills/c64-static-analysis/SKILL.md +24 -13
- package/skills/c64-static-analysis/scripts/lib/coverage.ts +3 -4
- package/skills/c64-static-analysis/scripts/lib/findings.ts +2 -2
- package/skills/c64-static-analysis/scripts/lib/instructions.ts +1 -1
- package/skills/c64-static-analysis/scripts/lib/macros.ts +6 -8
- package/skills/c64-static-analysis/scripts/{analyze.ts → static-analysis.ts} +58 -118
- package/skills/c64-testing/SKILL.md +94 -19
- package/skills/c64-testing/references/recording-format.md +125 -0
- package/skills/c64-testing/references/scenario-format.md +24 -19
- package/skills/c64-testing/scripts/{diff.ts → lib/diff-files.ts} +18 -69
- package/skills/c64-testing/scripts/lib/diff.ts +5 -3
- package/skills/c64-testing/scripts/lib/play.ts +334 -0
- package/skills/c64-testing/scripts/lib/recording.ts +662 -0
- package/skills/c64-testing/scripts/lib/replay.ts +105 -0
- package/skills/c64-testing/scripts/{run.ts → lib/runs.ts} +36 -59
- package/skills/c64-testing/scripts/lib/scenario.ts +73 -81
- package/skills/c64-testing/scripts/testing.ts +189 -0
- package/skills/c64-unpacker/SKILL.md +42 -25
- package/skills/c64-unpacker/scripts/lib/evidence.ts +3 -4
- package/skills/c64-unpacker/scripts/lib/loads.ts +12 -10
- package/skills/c64-unpacker/scripts/lib/machine.ts +0 -2
- package/skills/c64-unpacker/scripts/lib/stages.ts +14 -19
- package/skills/c64-unpacker/scripts/{unpack.ts → unpacker.ts} +109 -211
- package/src/c64.ts +35 -20
- package/src/cli/main.ts +2 -2
- package/src/errors.ts +38 -0
- package/src/graphics.ts +3 -1
- package/src/host/server.ts +3 -2
- package/src/host/vice/session.ts +4 -4
- package/src/host-client/entry-state.ts +106 -0
- package/src/host-client/image.ts +21 -10
- package/src/host-client/steps.ts +285 -108
- package/src/host-client/transfer.ts +21 -15
- package/src/host-client/vice-session.ts +1 -1
- package/src/knowledge/database.ts +3 -23
- package/src/knowledge/expression.ts +8 -11
- package/src/knowledge/history.ts +2 -2
- package/src/knowledge/import.ts +13 -14
- package/src/knowledge/names.ts +50 -0
- package/src/knowledge/program.ts +11 -10
- package/src/knowledge/read.ts +16 -21
- package/src/knowledge/schema.ts +9 -3
- package/src/knowledge/text.ts +5 -5
- package/src/knowledge/write.ts +93 -137
- package/src/mcp/inputs.ts +105 -0
- package/src/mcp/output.ts +2 -13
- package/src/mcp/server.ts +12 -60
- package/src/mcp/tools/debug.ts +17 -12
- package/src/mcp/tools/execution.ts +5 -32
- package/src/mcp/tools/input.ts +7 -32
- package/src/mcp/tools/media.ts +6 -5
- package/src/mcp/tools/memory.ts +11 -38
- package/src/mcp/tools/video.ts +6 -5
- package/src/native/c64run.ts +162 -0
- package/src/native/discover.ts +8 -0
- package/src/native/dxa.ts +7 -6
- package/src/native/ghidra/analyze.ts +2 -1
- package/src/native/ghidra/index.ts +2 -1
- package/src/native/processes.ts +4 -3
- package/src/native/status.ts +25 -4
- package/src/native/types.ts +3 -7
- package/src/opcodes.ts +13 -13
- package/src/platform.ts +9 -9
- package/src/project.ts +16 -26
- package/src/protocol/messages.ts +3 -21
- package/src/protocol/vice.ts +7 -7
- package/src/script.ts +491 -49
- package/skills/c64-assembler/scripts/assemble.ts +0 -138
- package/skills/c64-docs/scripts/generate.ts +0 -109
- package/skills/c64-docs/scripts/link.ts +0 -239
- package/skills/c64-memory-map/scripts/memmap.ts +0 -92
- package/skills/c64-testing/scripts/checklist.ts +0 -51
- package/skills/c64-testing/scripts/test.ts +0 -65
|
@@ -4,31 +4,30 @@
|
|
|
4
4
|
// entry; and what the program reads or executes outside the image. Evidence
|
|
5
5
|
// only: nothing here decides what is original.
|
|
6
6
|
|
|
7
|
-
import { COVERAGE, executedRamCode } from "#src/c64.ts";
|
|
8
|
-
import type { Range } from "./compare.ts";
|
|
7
|
+
import { type AddressRange, COVERAGE, executedRamCode } from "#src/c64.ts";
|
|
9
8
|
|
|
10
9
|
export type Access = "executed" | "read" | "written" | "read-written" | "untouched";
|
|
11
10
|
|
|
12
11
|
export interface SeparationInput {
|
|
13
|
-
segments:
|
|
12
|
+
segments: AddressRange[];
|
|
14
13
|
/** 64 KiB with the image bytes at their addresses. */
|
|
15
14
|
memory: Uint8Array;
|
|
16
15
|
entry?: number;
|
|
17
16
|
/** The stages of an unpacker capture, in order; the last one is the program. */
|
|
18
|
-
stages?: Array<{ entry: number; wrote:
|
|
17
|
+
stages?: Array<{ entry: number; wrote: AddressRange[] }>;
|
|
19
18
|
/** Joined coverage files. */
|
|
20
19
|
coverage?: Uint8Array;
|
|
21
|
-
codeRegions: Array<
|
|
20
|
+
codeRegions: Array<AddressRange & { type: string }>;
|
|
22
21
|
references: Array<{ from: number; to: number; kind: string }>;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
export interface EvidenceRange extends
|
|
24
|
+
export interface EvidenceRange extends AddressRange {
|
|
26
25
|
/** The last stage that wrote the range; absent when no stage wrote it. */
|
|
27
26
|
stage?: number;
|
|
28
27
|
access?: Access;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
export interface CodeRegionEvidence extends
|
|
30
|
+
export interface CodeRegionEvidence extends AddressRange {
|
|
32
31
|
type: string;
|
|
33
32
|
/** Absent when the image has no entry. */
|
|
34
33
|
reachable?: boolean;
|
|
@@ -45,14 +44,14 @@ export interface Separation {
|
|
|
45
44
|
* those bytes there), and `generated` it wrote and then executed, in
|
|
46
45
|
* pieces of code with gaps of up to two operand bytes.
|
|
47
46
|
*/
|
|
48
|
-
outside: { read:
|
|
47
|
+
outside: { read: AddressRange[]; executed: AddressRange[]; generated: AddressRange[] };
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
const SYSTEM_PAGES_END = 0x03ff;
|
|
52
51
|
|
|
53
52
|
/** Joins addresses in order into ranges; `gap` is the most bytes between two addresses in one range. */
|
|
54
|
-
function merge(addresses: number[], gap = 0, joins: (from: number, to: number) => boolean = () => true):
|
|
55
|
-
const ranges:
|
|
53
|
+
function merge(addresses: number[], gap = 0, joins: (from: number, to: number) => boolean = () => true): AddressRange[] {
|
|
54
|
+
const ranges: AddressRange[] = [];
|
|
56
55
|
for (const address of addresses) {
|
|
57
56
|
const last = ranges.at(-1);
|
|
58
57
|
if (last !== undefined && address - last.end - 1 <= gap && joins(last.end, address)) last.end = address;
|