Redrawn schematics (tools/kicad/sch)¶
Readable, block-structured KiCad schematics for the System-5 cards, drawn from each card's proven board netlist (2026-10-26). The way YACC1-D draws its generated cards: a root sheet and one sheet per functional block, the parts placed by ELK (the Eclipse Layout Kernel) and the nets between them drawn as wires, KiCad's own symbols where they fit.
| File | What it is |
|---|---|
gen_schematic.py |
the generator: reads <card>/kicad/<rev>/reports/netlist.net, picks symbols, draws the sheets from the card's schematic/spec.py, then proves the result |
sheet.py |
the sheet writer (symbols, stubs, labels, power symbols), from YACC1-D's gen_cf.py, made card-independent |
sch_wire.py, elk_layout.js |
ELK placement and wiring, from YACC1-D, unchanged but for the import |
make_system5_lib.py โ system5.kicad_sym |
symbols KiCad lacks: the 30-pin System-5 bus, the IDT7134, the 40-pin IDE header |
build_all.sh |
redraws and proves every card and the bus, then runs make_book.py |
make_book.py |
binds every card's PDF into docs/manual/pdf/system5-schematics.pdf: a cover, a contents page and a bookmark per card and per sheet |
cd tools/kicad/sch && npm install
tools/kicad/sch/build_all.sh
What is proven¶
- The circuit is not typed in. It comes from the board netlist, which is itself proven equal to the board (and, where they survive, the 2005 order gerbers).
- The drawing is checked again: KiCad's netlist of the new schematic must group every pin exactly as the board netlist does (every net of two or more pins; names may differ). The generator prints
MATCHor the differences, and exits non-zero on a difference. - ERC runs on each (errors only); the report is
<proj>-erc.json. - Symbols: KiCad's standard symbol is used only if it has every pin number the board uses; otherwise the card's own converted Eagle symbol.
- Nothing on the board side changes. Each schematic is its own KiCad project in
<card>/kicad/<rev>/schematic/; the board, its project andMASTERare untouched.
The cards (2026-10-26)¶
| Card | Folder | Sheets | Proof | ERC errors |
|---|---|---|---|---|
| IO panel Rev A (new, 2026-10-30) | hardware/io-panel/kicad/rev-a/schematic/ |
Decode, Output, Input, Control, Power | MATCH 64 | 0 |
| CPU Rev D (new, 2026-10-30) | hardware/cpu/kicad/rev-d/schematic/ |
CPU, Clock, Control, Boot, Flags, Power | MATCH 78 | 0 |
| CPU Rev A (as drawn) | hardware/cpu/kicad/rev-a/schematic/ |
CPU, Control, Boot, Flags, Power | MATCH 88 nets | 0 |
| Memory Rev E | hardware/memory/kicad/rev-e/schematic/ |
Address, RAM lo, RAM hi, EPROM lo, EPROM hi, Memory, Power | MATCH 88 | 0 |
| 6845 video Rev B | hardware/video-6845/kicad/rev-b/schematic/ |
Decode, VRAM+CRTC, Clocks, Video, Power | MATCH 99 | 0 |
| IO (1861 + keyboard) Rev A | hardware/io-1861-keyboard/kicad/rev-a/schematic/ |
Decode, Keyboard, 1861, Power | MATCH 79 | 1 (the mini-DIN's shield pin is a power input in its Eagle symbol) |
| IDE/CF Rev A | hardware/ide-cf/kicad/rev-a/schematic/ |
Decode, IDE, Power | MATCH 49 | 0 |
| Bus driver Rev B | hardware/bus-driver/kicad/rev-b/schematic/ |
Expanders, Nano, Power | MATCH 41 | 0 |
| Bus backplane 2009 | hardware/bus/kicad/rev-2009/schematic/ |
Slots, Power | MATCH 36 | 0 |
| Bus backplane Rev D (new) | hardware/bus/kicad/rev-d/schematic/ |
Slots, Pull-ups, Power | MATCH 37 | 0 |
Each folder: spec.py (the blocks, their notes, names for unnamed nets, symbol overrides), the .kicad_sch sheets and .kicad_pro, the PDF, KiCad's netlist of the drawing and the ERC report.
Keeping them up to date¶
Ken's rule (2026-10-28): the PDFs follow the boards. After any change to a card's circuit, re-export its reports/netlist.net, redraw it and rebuild the book (build_all.sh does every card), and commit the PDFs with the change. tools/preorder_check.py does it too, as its SCHEMATIC check, for any board with a schematic/spec.py: it first proves reports/netlist.net against the board, so a stale netlist fails rather than giving a stale drawing.
The sheets¶
- Each sheet is the smallest that holds its drawing, A4 to A0, landscape or portrait (a tall, narrow drawing goes portrait). The drawing may run below the title block's top edge where it stays left of it.
- The title block carries the sheet's place in the card, how it was drawn and the card's theory notes (
spec.pyTHEORY), wrapped at semicolons to fit. - Most 2005 Eagle drawings carry no values for resistors and capacitors: they show as R and C. A
VALUESdict inspec.pygives real ones.
Adding a card¶
Convert it first (tools/eagle_to_kicad_all.py --only ...), so it has reports/netlist.net. Then write schematic/spec.py (copy one), add the folder to build_all.sh and to make_book.py's CARDS, run gen_schematic.py on the folder, look at the PDF and move parts between blocks until each sheet reads well. Spare gates (inputs on a supply, outputs open) and the chips' power units go to the Power sheet by themselves.