@henols/c64-re-tools 2.0.0-rc.6 → 2.0.0-rc.7
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/package.json +1 -1
- package/skills/c64-assembler/SKILL.md +1 -1
- package/skills/c64-basic/SKILL.md +1 -1
- package/skills/c64-disk/SKILL.md +3 -3
- package/skills/c64-disk/scripts/disk.ts +2 -1
- package/skills/c64-emulator/SKILL.md +3 -1
- package/skills/c64-knowledge/SKILL.md +1 -1
- package/skills/c64-provenance/SKILL.md +7 -5
- package/skills/c64-provenance/scripts/compare.ts +26 -0
- package/skills/c64-provenance/scripts/provenance.ts +24 -10
- package/skills/c64-provenance/scripts/separate.ts +12 -4
- package/skills/c64-reverse-engineering/SKILL.md +2 -2
- package/skills/c64-source/SKILL.md +15 -9
- package/skills/c64-source/scripts/generate.ts +36 -10
- package/skills/c64-source/scripts/loader.ts +88 -6
- package/skills/c64-source/scripts/source.ts +40 -9
- package/skills/c64-static-analysis/SKILL.md +4 -4
- package/skills/c64-static-analysis/scripts/analyze.ts +13 -6
- package/skills/c64-static-analysis/scripts/coverage.ts +4 -4
- package/skills/c64-static-analysis/scripts/idioms.ts +14 -9
- package/skills/c64-testing/SKILL.md +1 -1
- package/skills/c64-testing/scripts/scenario.ts +2 -2
- package/skills/c64-unpacker/SKILL.md +9 -7
- package/skills/c64-unpacker/scripts/loads.ts +12 -1
- package/skills/c64-unpacker/scripts/stages.ts +66 -3
- package/skills/c64-unpacker/scripts/unpack.ts +96 -30
- package/src/c64.ts +14 -5
- package/src/cli/status.ts +26 -3
- package/src/host/tools/c1541.ts +34 -5
- package/src/host/tools/petcat.ts +5 -2
- package/src/host/tools/status.ts +6 -3
- package/src/host/vice/adapter.ts +23 -9
- package/src/host/vice/process.ts +7 -2
- package/src/host/vice/session.ts +47 -10
- package/src/host-client/connect.ts +10 -10
- package/src/host-client/coverage.ts +19 -10
- package/src/host-client/tools.ts +5 -5
- package/src/host-client/vice-session.ts +1 -1
- package/src/knowledge/schema.ts +7 -0
- package/src/knowledge/write.ts +5 -0
- package/src/mcp/tools/debug.ts +3 -2
- package/src/mcp/tools/machine.ts +4 -1
- package/src/mcp/tools/media.ts +5 -1
- package/src/mcp/tools/video.ts +2 -0
- package/src/native/discover.ts +2 -1
- package/src/platform.ts +3 -2
- package/src/protocol/tools.ts +19 -4
- package/src/protocol/vice.ts +11 -2
package/src/protocol/vice.ts
CHANGED
|
@@ -259,6 +259,8 @@ export interface Rectangle {
|
|
|
259
259
|
export interface ScreenComparison {
|
|
260
260
|
match: boolean;
|
|
261
261
|
mismatchingPixels: number;
|
|
262
|
+
/** Pixels compared: the frame minus the masked ones; always at least 1. */
|
|
263
|
+
comparedPixels: number;
|
|
262
264
|
mismatchRatio: number;
|
|
263
265
|
/** Absent when no pixel differs. */
|
|
264
266
|
bounds?: Rectangle;
|
|
@@ -310,6 +312,8 @@ export interface MachineStatus {
|
|
|
310
312
|
window: boolean;
|
|
311
313
|
/** Present only while the C64 CPU is stopped. */
|
|
312
314
|
pc?: number;
|
|
315
|
+
/** Present, true, while a cartridge from an autostart is attached. */
|
|
316
|
+
cartridge?: true;
|
|
313
317
|
}
|
|
314
318
|
|
|
315
319
|
export interface MemoryReadParams {
|
|
@@ -417,7 +421,8 @@ export interface ViceOperations {
|
|
|
417
421
|
/** Attachment: the PRG bytes, load address first. */
|
|
418
422
|
programLoad: { params: { address?: number }; result: { state: RunState; loadAddress: number; size: number } };
|
|
419
423
|
/** Attachment: the program or image bytes; `type` is the file's extension. `index` is VICE's file number: 0 loads "*", 1 is the first directory entry. */
|
|
420
|
-
|
|
424
|
+
/** `emulatorFlaw`: for a tape image, a known flaw of the host's VICE version that a tape load meets (D56). */
|
|
425
|
+
autostart: { params: { type: string; index: number; run: boolean }; result: { state: RunState; emulatorFlaw?: string } };
|
|
421
426
|
/** Attachment: the disk image bytes; `type` is the file's extension. */
|
|
422
427
|
diskAttach: { params: { type: string }; result: { attached: boolean } };
|
|
423
428
|
/** pc is the reset vector when run is false: the CPU stops there. */
|
|
@@ -966,7 +971,8 @@ export function validateViceResult<O extends ViceOperation>(op: O, value: unknow
|
|
|
966
971
|
isOneOf(VIDEO_STANDARDS, value.videoStandard) &&
|
|
967
972
|
typeof value.warp === "boolean" &&
|
|
968
973
|
typeof value.window === "boolean" &&
|
|
969
|
-
(value.pc === undefined || isInteger(value.pc, 0, 0xffff))
|
|
974
|
+
(value.pc === undefined || isInteger(value.pc, 0, 0xffff)) &&
|
|
975
|
+
(value.cartridge === undefined || value.cartridge === true);
|
|
970
976
|
if (!ok) throw new ProtocolError("status result is malformed");
|
|
971
977
|
break;
|
|
972
978
|
}
|
|
@@ -1052,6 +1058,7 @@ export function validateViceResult<O extends ViceOperation>(op: O, value: unknow
|
|
|
1052
1058
|
case "autostart": {
|
|
1053
1059
|
if (!isOneOf(RUN_STATES, value.state)) throw new ProtocolError(`${op} result is malformed`);
|
|
1054
1060
|
if (op === "reset" && value.pc !== undefined && !isInteger(value.pc, 0, 0xffff)) throw new ProtocolError("reset result is malformed");
|
|
1061
|
+
if (op === "autostart" && !(value.emulatorFlaw === undefined || typeof value.emulatorFlaw === "string")) throw new ProtocolError("autostart result is malformed");
|
|
1055
1062
|
break;
|
|
1056
1063
|
}
|
|
1057
1064
|
case "programLoad": {
|
|
@@ -1082,6 +1089,8 @@ export function validateViceResult<O extends ViceOperation>(op: O, value: unknow
|
|
|
1082
1089
|
const ok =
|
|
1083
1090
|
typeof value.match === "boolean" &&
|
|
1084
1091
|
isInteger(value.mismatchingPixels, 0, 1 << 20) &&
|
|
1092
|
+
isInteger(value.comparedPixels, 1, 1 << 20) &&
|
|
1093
|
+
(value.mismatchingPixels as number) <= (value.comparedPixels as number) &&
|
|
1085
1094
|
typeof value.mismatchRatio === "number" &&
|
|
1086
1095
|
value.mismatchRatio >= 0 &&
|
|
1087
1096
|
value.mismatchRatio <= 1 &&
|