It's Back...

Well, it really never left...

I've been using DeSmet C (often found on the web as PCC) continuously since 1985. My fingers "think" in DeSmet C.

Of course, the company (C-Ware Corporation) had vanished years ago. At the time, I didn't think much of it.

Much later, however, as programming C became a way of life (or at least a decent living), I started feeling the usual insane urge to play with a C compiler source.

I noticed that C compilers seemed to have become Mega-Programs like GCC and Watcom that take megabytes and do everything. The learning curve to try to play with them was just too much.

There are other, smaller options like TCC that is a complete C compiler, but it's too geared to 386+ and Linux to be a good playground. Other open-source C compilers tend to be variations of Small C that, while understandable, don't implement the entire language.

So, I went looking for a snark. Thanks to Google and Superpages, I was actually successful, finding the people from C-Ware Corporation.

I now have the source code to the DeSmet C compiler, and permission to make it open source. It's a complete ANSI C compiler (version 3.1h), but small enough and simple enough to understand and play around with.

I'm making available all versions I have, with manuals (PDF's from scanned hardcopy) and source where available.

DeSmet C, version 2.40

DeSmet C, version 2.51 with manual

PCC, version 1.2D

DeSmet C, version 3.03 with source

DeSmet C, version 3.1h with source and manual

If you look in the PCC documentation, you will see credit given to L. B. Neal who convinced DeSmet to create the PCC package. Well, it turns out that he is still around.

He contacted me, and sent me DeSmet version 3.1L, 3.1N, and the DeSmet Tools disk. I have now made them available on this website.

DeSmet C, version 3.1L

DeSmet C, version 3.1N

DeSmet C Tools disk

The most common version (and the version I use for everything) is 2.51, which is found around the net as PCC. However, this is one version I do not have the source to.

However, a while back I had a brainstorm, and have been putting my free time (what little I have of it) into re-creating the DeSmet 2.51 source code. This is the top of my "to-do" list -- the C88 source is done, with the GEN source under construction.

For more information, please check out the 2.51 Reconstruction page.

Sometimes (when I find a free minute...) I do some work on formatting cleanup and commenting the 3.1h compiler source, with an occasional bugfix and bug discovery. C88, the first pass of the compiler is fairly well commented, though there are a couple of bugs that have been noted but not yet fixed. I'm currently doing GEN, the second pass of the compiler. My "work in progress" is

I have found that the source code labeled "3.1h" is not the source to the distribution files labeled "3.1h". In the source code, there are additional types that may be in the DTYP field (see NODES.H):
Apparently, these were added for ANSI support. However, I do not as yet know if they are "hooked up" and generate code.

However, as a result, C88 and GEN compiled from the "3.1h" source cannot be mixed with the distributed C88 and GEN. If you do mix-and-match, incorrect code can be generated.

Also, I have not yet checked to see if O88 properly recognizes code sequences generated by the "improved" 3.1h.

Between work (a necessary evil...) and fostering kittens for a local rescue group (Stray Cat Blues), I haven't had any spare time to put into DeSmet. Sorry, I haven't abandoned it, and it will get done.

On the bright side, there was a project at work that had to be done NOW, and of course I did it in DeSmet C. Also of course, work no longer wants it.

I've asked the company I work for, Athena Controls, for permission to make it open source, and they have agreed. Look in the Source files page for TinyPLC.

I have been given permission to make the SEE source code open source. Currently, I have two versions available:

SEE Version 4.2
SEE Version 3.2
It turns out that, once upon a time, you could buy the source to the SEE editor. If only I had known...
Anyway, a kind old-time DeSmet user had the SEE 3.2 source code and sent me a copy. And, I have a line on the SEE 2.4 source code (this is the version that I use every day). Keep your fingers crossed.

Note that the SEE executable is available in the compiler distributions above.

I've also tracked down the source to O88, a 3rd-party optimizer for the DeSmet C compiler, and have been given permission to make it open source as well. Yet another goodie to play with!

O88, version 3.06D with source and manual

The Compiler has been placed under the GNU GPL, and the library has been placed under the GNU LGPL.

Utilities and Links

Source files for DeSmet C

I will be doing source cleanup, fixes, and enhancements. If you want to work on the compiler, I would be happy to include your code and give you credit. Please email me with comments and fixes.

If there is enough interest, I will setup a forum for discussions and code exchanges.

These pages last modified 10/08/2009