3 Commits
Author SHA1 Message Date
magdevandClaude Fable 5 85a75b321d Add MIT licence
Declared with the PEP 639 license / license-files fields, so the text ships in
the wheel and the image rather than only the repository. Records the terms of
the two things this repository deliberately does not contain: Boxsim, which is
Visaton freeware and is never redistributed, and kicad-visaton-lib, which is
CC-BY-SA-4.0 and is copied into any image built by tools/build-image.sh.

Verified: pip install exposes License-Expression MIT and packages the text as
dist-info/licenses/LICENSE, both on the host and in the image.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-29 12:35:09 +02:00
magdevandClaude Fable 5 d173328443 Point library references at the new Gitea home
kicad-visaton-lib moved to
ssh://git@src.bundespruefstelle.ch:2022/magdev/kicad-visaton-lib.git.

Also corrects the image source label, which named a repository that does not
exist: this repo is magdev/boxsim-fileformat-rev, not boxdev/re-boxsim.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-29 12:23:43 +02:00
magdevandClaude Fable 5 4737a5bae8 Add boxsim CLI: pure Python codec, netlist extraction, KiCad project generation
Replaces the bpj2ini.py prototype with a packaged tool. The A2F codec is now
reimplemented in Python, so neither Boxsim.exe nor a CPU emulator is needed to
decode a container; the emulator survives as a development-only oracle that the
codec is differentially tested against.

Verified:
- 134 containers decode byte-identically to Boxsim's own decoder, 270 pre-2.0
  files rejected by both implementations (tools/difftest.py --self-test)
- Default.BPJ: 22 components, 14 nets, no dangling terminal
- 22 of 22 parts resolve to library symbols; one series inferred from a
  sibling, two DC resistance deviations reported
- ERC clean and the netlist KiCad extracts from the generated sheet is an
  identical partition to the one derived from the Boxsim grid
- container build byte-identical to the host build
- 32 tests passing, ruff clean

Decode time went 69 s -> 14.5 s (binding emulator hooks to trap addresses)
-> 1.6 s (pure Python).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-29 11:10:43 +02:00