Version 3.1h of the DeSmet compiler is a major change to the DeSmet compiler. ANSI-C had been introduced, and DeSmet produced an ANSI compaitible version of it's compiler to "keep up".

Probably the biggest changes introduced in C syntax by ANSI was the change in passed parameter declarations. The original K&R syntax was, for example,

int foo(a,b,c) int a, b, c; { ... }
However, ANSI changed this to
int foo(int a, int b, int c) { ... }

Other ANSI additions, such as the "pascal" and "fortran" keywords, are also legal, but do not do anything.

The (paper!) manual for version 3.1h was an "upgraded" version 3.03 manual, created by adding (and replacing?) pages. I still have mine (yah!), and have scanned it and converted it to a .PDF with searchable text -- C88_31H.PDF. Be warned, it's 10.2MB.

If you want to take a crack at a smaller / better OCR'ed manual, please let me know. I can provide you with the .TIF's I scanned, or even a paper copy.

The early compiler version limitation that all structure/union elements must be globally unique names is gone in version 3.1h, even the remnants that remaind in earlier versions.

Version 3.1h came on five floppies containing self-extracting .EXE files. Since these files tend not to run on modern Windows machines, I have extracted them and created normal .ZIP files.

Disk 1 which contains
BIN.ZIP -- all the executables -- compiler, debugger, editor, profiler, etc
INCLUDE.ZIP -- all the .H files
Disk 2 which contains the libraries and addional files
GRAPHICS.ZIP -- graphics libraries (CGA, Hercules)
LIB.ZIP -- CSTDIO.S, CSTDIO7.S, C88.LIB, C887.LIB, SENSE87.S, TOOLBOX.S
OBJ.ZIP -- D88*.O, SEE.O, EXEC.O, MSVER1.O, etc
Note the D88 and SEE .O files -- back in the early "not everything was a PC-compatible computer" days, they allowed you to customize the screen I/O of the debugger and editor for your system.
Disk 3 which contains some minor source files
SRC.ZIP -- contains source files. The most important ones are C.ASM (MASM compatible C startup code), PCIO.A (screen I/O functions for D88 and SEE), and STUB.ASM (sample of segmentation controls needed to link to C88 and MASM).
Disk 4 which contains the library source
Source code to CSTDIO.S, CSTDIO7.S, C88.LIB, C887.LIB
WARNING: This library source code is buggy. Use the library source from SRC_31H.ZIP instead!
Disk 5 which contains the Large Case linker and libraries
BBIND.EXE, BSTDIO.S, BSTDIO7.S, BC88.LIB, BC887.LIB, and some minor stuff.

The source code to version 3.1h of the DeSmet compiler is available. It was given to me as a .ZIP of someone's development directory, so it contained a fair amount of "fluff" and .BAT files that referred to their machine setup.

This "raw source" is available in the file DES_31H.ZIP. It is mostly useful for the "fluff" and minor utilities. Be warned that the "runtime" directory, which contains the library source, is a mess. It took me a while to recreate the library source.

A "clean" copy of the source is available in SRC_31H.ZIP. It contains .ZIPs of the source files for the indivual programs, with .BAT files to automate the compile.

One question about the compiler is "which version of the compiler was used to compile the compiler"? This is actually somewhat hard to answer.

The C88.EXE and GEN.EXE programs must be compiled with the version 3.1h compiler, as they use ANSI C parameter declarations.

The other programs in the DeSmet compiler (ASM88.EXE, BIND.EXE, LIB88.EXE, and D88.EXE) are the same files as the 3.03 distribution, and so have the same "which compiler was used" question. Since the version 3.03 compiler will cleanly compile the 3.03 source, that should be the starting point.

The library source, LIB_31H.ZIP in SRC_31H.ZIP, *MUST* be linked with the LIB88 included in LIB_31H.ZIP. When I reconstructed the library, the number of files was too large to fit in the allocated buffer in the "original" LIB88, and so I modified LIB88 to use a larger name buffer.

I'm currently working on formatting cleanup and commenting the 3.1h compiler source, with an occasional bugfix and bug discovery. My "Work In Progress" is currently 07172006.zip

I now have the DeSmet version 3.1L and DeSmet verion 3.1N distrubutions.

Looking at the revision logs (VERSION.DOC) of 3.1L and 3.1N, I see that most of the updates were library fixes (up to version 3.1K, December 1st 1990, which corrected a "final" bug in _doscan.c). Since the library source I have for 3.1H has later dates than the general 3.1H release, and in fact has a date of 12/1/90 for _doscan.c, I think the library source I have is "up to date".

The changes to feof(), ferror(), and clrerror() in 3.1L are more problematic, since a quick text search of the 3.1H library source did not find feof(), ferror(), or clrerror() in any source file (.C, .H, or .A). I'll have to look at this more closely later.

I have not looked for the code parsing / generation updates mentioned in the 3.1N VERSION.DOC, but having a description should make finding / fixing this quite easy. I'll add them to the "bug" notes I already have from code comment / cleanup. They are on the "to do" list.

Back to main page



These pages last modified 09/24/2006

[an error occurred while processing this directive]