tools¶
Host scripts: busdrv.py (bus-tester client), alias_min.py, ROM capture/compare, inventory.py, the migration and audit tools, the PDF generators, and the KiCad conversion:
eagle_to_kicad_all.py— converts EVERY Eagle design under hardware/ into<item>/kicad/<rev>/KiCad 10 projects and writeshardware/KICAD.md; per design it runs the three tools inkicad/(eagle_sch_to_kicad.pyschematic converter,finish_board.pyboard finisher on KiCad's Eagle board import,compare_netlists.pyschematic-vs-board proof), then ERC, DRC, a schematic PDF and board renders intoreports/.kicad/project-template.kicad_procarries the OSH Park rules.kicad/sch_overlaps.py— readability check for any.kicad_sch(or a folder of them): text over text, text over a symbol body, text crossed by a wire/pin/graphic line, and anything off the drawing frame or on the title block, with the worst offenders per sheet (--summary,--detail N,--pairs N,--json;--calibrate SVGchecks its text boxes against akicad-cli sch export svgrender).eagle_to_kicad_all.pyputs its counts in each README and inhardware/KICAD.md.verify_fab_vs_brd.py— proves an Eagle.brdis the design a fab house received: every hole against the Excellon drill file, every Top/Bottom track against the copper gerbers, inner-layer planes, part list and pick-and-place, optionally byte-compares two gerber sets. Takes a gerber zip or a whole order archive (nested zips are searched). First used 2026-09-24 on the memory card (hardware/cards/memory/eagle/v1.3/README.md).verify_processing.py— builds the Processing command sender with the Processing 4 CLI and re-compiles it with warnings on.gen_y1_optab.py— generates the instruction tables of the native assemblers fromsoftware/assembler/yacc1.def:os/asm_optab.cfor/BIN/ASMC(asm.c, 2026-09-25) andos/commands-asm/asmtab.incfor/BIN/ASM(asm.asm, 2026-09-26) (os/Makefileruns it,--checkfails when either is stale:tests/asm/run.py). It compiles each.defconstruction line with a copy of RC/asm'sTranslate().y1kermit.py— a small standard Kermit for the Mac side of the console line (2026-09-26):send FILE...to/BIN/KERMIT'skermit -r(or its-xserver),receive [DIR]fromkermit -s,get NAME... [DIR],finish/byefor the server,term(a plain terminal, Ctrl-] quits). The same protocol subset as/BIN/KERMIT: short packets, window 1, block checks 1-3 (--check, 3 by default), control prefixing, repeat counts (--norpt), 8th-bit prefixing only when asked (--ebqasks), attribute packets (--noattr), text mode (--text: LF as CR LF).--port(default: the one USB serial port that is not the sequencer's FTDI; the port is opened withmonload.py'sLink, pyserial),--baud 38400,--maxl(94),--time(the timeout it asks the other side to use, 10 s),--timeout(its own, 20 s),-q. Fault injection for the tests:--corrupt N,--drop N,--nak N,--mute N(the Nth packet of the run damaged, not sent, NAKed, not answered). It prints what it sent and received and a summary (packets, retries, NAKs, timeouts, repeats); exit 1 on failure. The fallback when C-Kermit is not at hand, and whattests/kermit/run.pydrives both emulators with;docs/procedures/KERMIT.mdis the how-to.y1.ksc— C-Kermit's settings for the same line (kermit tools/y1.kscopens/dev/cu.usbserial-AB0MVHSQat 38400, no flow control, carrier-watch off, binary, prefixing all, autodownload, and connects;docs/procedures/KERMIT.mdexplains each).
Contents migrated 2026-09-19; MIGRATION.md at the repo root says which copy each item came from.
Already here (written during the 2026-09 bring-up session; they existed nowhere else)¶
author_headers.py+authors.tsv— the authorship header at the top of every source file (2026-10-02):authors.tsv= each file's author category (Ken / Ken + Claude's logged changes / Claude / Claude's P8X ports / RC/asm with Ken's port / third-party and generated: no header) and why;--check(inmake check) fails on a missing or stale header or a source file not in the table,--applywrites them,--classifyadds new files to the table.setup_check.py— is this Mac set up for YACC1-D? Reports the tools each kind of work needs (core build/tests, board design, Arduino sketches, the machine's USB-serial ports, C-Kermit) and how to get what is missing; installs nothing (2026-09-27, for the second Mac; see ../CLAUDE.md "Two Macs")busdrv.py— Python client for the Bus Test Card (19200 baud,CMD:OPERAND#); readmem/writemem/dump helpersalias_min.py— minimal reproduction of the video card block-0/9 write-through faultinventory.py— hashes every file under YACCS and reports what is unique where (used to build MIGRATION.md)
../firmware/rom/eprom-captured-2026-09-18.{bin,hex} is the 8K image read out of the memory card's
28C64 through the bus tester; it is byte-identical to Software-vs/Assembler/rom (git ff7d85a).