Does anyone recognize this legacy file format?

I’m trying to convert legacy “Designworks” schematics and libraries to KiCad.

I’ve looked at the data files, and they are an unusual style that I don’t recognize. Much is apparently 7-bit ASCII, but there some binary mixed in also. Sometimes formats use parentheses to indicate structure, but I’m not seeing any.

Here is a sample from the start of the file shown as text:

(F51A5004 D(V(g9 "000000000)(g3 "DMT)(g4 "CCSL))(3(g12 "ABCD
ABCD
ABCD
dS))(…(G401010)(‡10)(„50)(gC "DateStamp.OS))(…(G1002)(„21)(gB "AutoSym.Top)

Here is the same as a hex dump:

0000    28 46 35 31 41 35 30 30  34 20 44 28 56 28 67 39   (F51A5004 D(V(g9
0010    20 22 30 30 30 30 30 30  30 30 30 29 28 67 33 20    "000000000)(g3
0020    22 44 4d 54 29 28 67 34  20 22 43 43 53 4c 29 29   "DMT)(g4 "CCSL))
0030    28 33 28 67 31 32 20 22  41 42 43 44 0a 41 42 43   (3(g12 "ABCD.ABC
0040    44 0d 41 42 43 44 0d 0a  64 53 29 29 28 85 28 47   D.ABCD..dS))(.(G
0050    34 30 31 30 31 30 29 28  87 31 30 29 28 84 35 30   401010)(.10)(.50
0060    29 28 67 43 20 22 44 61  74 65 53 74 61 6d 70 2e   )(gC "DateStamp.
0070    4f 53 29 29 28 85 28 47  31 30 30 32 29 28 84 32   OS))(.(G1002)(.2
0080    31 29 28 67 42 20 22 41  75 74 6f 53 79 6d 2e 54   1)(gB "AutoSym.T
0090    6f 70 29 29 28 85 28 47  32 30 31 30 30 32 29 28   op))(.(G201002)(

Does anyone recognize this data structure? Any tips would be a helpful head start on figuring this out.

I have (and still use) Designworks.
I can try to open this file if you want.

It would certainly be a proprietary format. From a search their shopfront is still on the net, but their prices haven’t been adjusted since 2020 so probably no current development. Also it’s just a schematic capture tool AFAICT.

Worst comes to the worst you could reenter from the PDFs of the schematics.

This is not as bad as it seems at first. In KiCad you can load a picture of a schematic as a background image, scale it so it has roughly the same proportions as KiCad’s native symbols, and then simply trace over it. This reduces the job from “schematic design” to simple data entry. It’s a bit boring, but much faster.

How many of these schematics do you want to convert, and how complex are those schematics? Reverse-engineering a data format is a lot of work, and this “Designworks” software seems to be a bit of an obscure piece of software too. They managed to get around 64 posts on their forum in 10+ years. Even if you have several hundred projects, doing them by hand is probably still quicker then writing a converter. It’s nice to have importers into KiCad for as many Schematic / PCB design programs as possible, but realistically there are limits. My first impression is that there so few users of this software that it’s hardly worth writing an importer for it.

If you do want to write an importer. The format appears to be based on S-expressions A program that can reformat those (“beautifier”) is a nice aid. And there are also libraries to read s-expression based files into memory. For the rest, start looking at differences of simple files. For example compare an empty schematic with a schematic that has only a resistor on it. This (very likely) makes it easy to figure out what a resistor looks like in that file format. Then gradually add more objects. If you can get just resistors, capacitors, power symbols and wiring, then you already got 80% or so of the schematic.

There are also some projects to create a KiCad schematic from a programming language. This may be worth looking into to generate output. In KiCad V8 it’s also possible to open a python console inside the Schematic editor, but I’m not sure if there is much code behind that and what you can do with it inside KiCad.

@paulvdh,

Thanks for the reply! I have hundreds or maybe thousands of Designworks schematics and libraries from a period from 1994 to about 2015 when I started with KiCad. I started using Designworks at a company where cross platform Mac/Windows was important.

i have been manually converting and re-creating as required, but I thought maybe a conversion would be more efficient. I’d mostly like to have my libraries, so maybe I’ll start there.

Thanks for the reminder of S-Expressions. Maybe the format was inspired by S-Expressions, but it doesn’t really follow it. It is definitely not like the KiCad S-Expressions. The parentheses are not balanced for the entire file. I wrote a simple parser to display the files with newlines for each opening paren, with indent proportional to nesting depth. In some parts of the file there is a discernible structure, but other parts are not. The file ends at a positive indent level.

In summary, this is not going to be easy. I’m putting the idea on the back burner, and may think about it again from time to time as I enjoy this type of puzzle. Maybe the format is intentionally obfuscated, and there is a transformation that will make it more readable and parseable?

A design feature of many commercial products to lock you in

I used to discuss DesignWorks with the author, Neil Mackenzie. The last time I emailed him, it was about the imminent obsolescence of the current version, since it was a 32-bit App. He said that there were no plans to ever update it to 64-bit, which is what influenced me to switch to KiCad. I would suspect that the format is something that he came up with, 30+ years ago.

Since I have a lot of schematics in DW, I need to keep an old machine around so I can open them if I need to. I’ve been printing them all to PDFs, just as a backup.

Neil might be willing to work with you to parse the file, if you ask him.

@3Dogs, I’ve had an ongoing email thread with Neil for decades. In the more recent years, his response time is measured in months. His last message was a few months ago when he said he cannot release source code or file formats due to “contractual obligations”. That is what started me on this journey of exploration.

1 Like

OK.
Well - I guess that reverse engineering is the only choice. I wonder if one of those “gig” sites would be able to do it cheaply.