Djgpp''. Also, please be careful not to let
your fingers get confused and type something like dgjpp or gjgpp.
The first gcc I built was 1.35, which I built on an ISC Unix system running on a 386/16. I wrote custom replacements for the system calls, linked with ISC's libc.a, write a custom program to turn the resulting binary into a 32-bit EXE that Phar Lap's extender could use, and had the first gcc that ran on MS-DOS.
Because Phar Lap hadn't discovered virtual memory yet, and I didn't have enough physical memory to let gcc compile itself, I had to write an extender that could provide virtual memory. Go32 was born. The first files were control.c, mswitch.s, paging.c, and valloc.c, among a few other minor files. By the time I got this working, gcc 1.37 was out, so that was the first version that was built on a dos platform. I used this version for a while to work on my 32-bit OS, which I still have lurking around on my hard drive (in source form).
I scrounged through the net and found the recently free'd BSD sources, and ported their libc.a to MS-DOS. This, and many custom routines, was the basis for djgpp's standard library. The headers were based on the original g++-includes from g++ 1.37. This is why the headers don't match the libraries all the time.
The first version that made it big was djgpp 1.03, which can still be found in a few shareware catalogs, even though 1.03 was pre-grok-copyleft, and those shareware dealers are distributing it illegally.
The name was changed from djgcc to djgpp when C++ was added. I forget which release this was. Since C++ is integral to gcc, djgpp no longer stands for "DJ's G++" but probably stands for something like "DJ's GNU Programming Platform".
djgpp 1.05 was another big hit, as this was one of the first that was commercially available. djgpp 1.06 added VCPI. 1.10 added DPMI. 1.11 added DPMIEMU, the first step towards version 2, and appeared on the GNU Compiler Binary CD-ROM. Today, djgpp appears in many programming journals and on many CD-ROM distributions in many countries and languages.
Version 2 began due to a need to have a system that could be fully self-bootstrapping. Since go32 requires a Borland compiler to build, it didn't fit the bill. Cygnus, a big user of djgpp for their DOS-based products, requested a self-bootstrapping version, so version 2 was born. The first part was writing an assembler that could produce the 16-bit stub, so djasm was written. This stub relies on DPMI, a break from djgpp's traditional "run on anything" policy. The old go32 was used to provide DPMI services through an offspring product called CWSDPMI (Charles Sandmann), which will ship with djgpp. Eventually, even the DPMI server will be written in a combination of 32-bit gcc code and 16-bit djasm code, or if gcc can produce 16-bit code by then, in that.
Many "third-party" software has been written for djgpp, and many applications that are outgrowing their 16-bit roots are being rewritten to take advantage of djgpp's 32-bit environment. Popular examples of these (some are still in the works) are Quake, Info-Zip, GhostScript, Executor/DOS, WatTCP, Xemu, DESQview/X's developers kit, and countless data processing programs used by companies and individuals throughout the world.
|delorie software privacy
|Copyright © 1998
|Updated Dec 1998