Skip to content

The Wiring List Generator

Julie Montoya edited this page Jan 27, 2020 · 2 revisions

The Wiring List Generator takes a text representation of a wiring list (i.e., a modified SPICE deck: this has on every card a star, indicating to SPICE that what follows is a comment; but to BCP it indicates that what follows is the name of a footprint, possibly a pair of co-ordinates and if they are present, possibly a disposition, i.e. a side and a rotation angle) and compresses it (including its designator e.g. R13 and the connection data for each pin, from the first part of the card before the star) into BCP's internal binary representation, combining with it the relevant footprint definitions taken from a master footprint file.

This combined design file will be used in the new Design Application, instead of the separate footprints and wiring list files used in the test suites so far and the "playable" demonstration.

You need to select the sizes of the footprint headers (23 bytes per footprint), pin data (5 bytes per pin) and silkscreen data (3 bytes per pin), and the length of the parts list (8 bytes per component + 8 bytes) and wiring list (1 byte per pin wired). Accept the defaults for a small design and increase if necessary. The program expects the wiring list to be presented in DATA statements, one per card, at line 20000. If the first DATA line is an empty string, you will instead be prompted for a file to *EXEC. This should be a straightforward text file. (Watch for line endings if editing on the host to run under emulation! BBC line endings are \r or \n\r, Linux line endings are \n.)

Example Input

R1 1 2 10K * RESQ4X1 600 800 4
R2 2 0 10K * RESQ4X1 750 800 4
  • R1 -- Designator.

  • 1 2 -- Pin 1 connects to circuit node 1, pin 2 connects to circuit node 2.

  • 10K -- Value; used by SPICE, ignored by BCP.

  • star -- Indicates end of SPICE data.

  • RQ4X1 -- Footprint name (Resistor, Quarter watt, length 4, width 1). Required.

  • 600 -- X co-ordinate in thou (Co-ordinates are optional)

  • 800 -- Y co-ordinate in thou (Not allowed if X co-ordinate is absent)

  • 4 -- Disposition; no tens => topside, rotation 4. (14 would be underside, rotation 4.) Optional if co-ordinates are given, not allowed if co-ordinates are absent.

  • Designators are a single letter or one of the following pairs: BR, BZ, CH, CN, CP, CR, CV, DZ, FS, IC, JK, JP, LD, LP, LS, ME, MT, PL, PT, RL, RP, RT, RV, SK, TH, TP, TR, VC, VR, VT, ZD; followed by an integer from 1 to 1023.

  • Circuit nodes are numbered 0-255.

  • Footprint names are up to 7 characters long (this might possibly have been influenced ever so slightly by the Acorn DFS catalogue format).

  • Co-ordinates are in thous. (A forthcoming change to the maths library will enable co-ordinates to be given in hundredths of millimetres.)

  • Disposition contains the angle of rotation in the units (1 => 0°, 2 => 90°, 3 => 180°, 4 => 270°, exactly as the placement program), and the mounting side in the tens (0 => topside, 1 => underside).

Historical Note

In the beginning, wiring list data was generated by the test suite integrated into the database library source code. This worked until the database library outgrew the space available in a Model B. Intending to target this machine as long as is feasible, I stripped out the now-unneeded test code (it would still be in my old disk image files; I no longer have a finite stash of floppies to recycle! I guess I'd be backing up to tape on a real Beeb .....)

All further testing was done using the latest generation of footprints, and wiring lists already generated against the same footprints.

This wiring list generator has the ability to include only footprints that are actually part of the design, potentially allowing for more footprints in the master file than can be used in a design. (32 in this version.)