22.4 Where to find DJGPP packages?
Q: Where can I find an example of XXXX / a package doing YYYY ?
A: Salvador Eduardo Tropea (SET)
maintains a DJGPP Web Ring page. DJ Delorie
offers another very large collection of DJGPP-related links.
Here is a list of places you might look into for examples of frequently
needed code fragments, or for packages people keep asking about:
- Interrupt-driven support of peripheral devices and hooking hardware
- Network support libraries:
- for TCP/IP, check out the WATTCP library, which is available from the DJGPP Web site, or
from a Europe mirror,
it provides the TCP/IP sockets interface. (I am told that you can
safely ignore the warnings you get when compiling the package.)
- another DJGPP-compatible C networking library is KA9Q NOS TCP/IP package.
- another TCP/IP stack is Watt-32; it is
basically WATTCP upgraded to include DHCP, RARP, file-based
lookup, and BSD-compatible API.
- as part of the DOS Lynx port done by DJ Delorie, he ported the WATTCP library
as well; that port is available from DJ's server. There's also a newer DJGPP port of Lynx.
- a Winsock library called
libsocket is available, originally
developed by Indrek Mandre, currently
maintained by R. Dawe. The latest version
(0.8.0, as of this writing) is available from the libsocket home page, and
via FTP from
the DJGPP archives. The latest versions support both Winsock and the
newer Winsock2 VxD which is part of Windows 98. Many useful links to
related packages and info is available from Rich Dawe's home page.
- if you need to program an IPX interface, you can get started by
downloading examples of IPX programming, and also read the IPX Web page.
- code to access the NetBIOS API with DJGPP is available from
A. Sinan Unur's page.
- Dynamically loaded code:
- Check out the DLM (Dynamic Link Modules) environment for DJGPP, written
by Ilya Ryzhenkov, available from the
DLM home page. This package makes it
very easy to use dynamically loaded code, since it has almost no impact
on how you write your code, and supports all common C++ features,
like inheritance, virtual functions, etc.
- A dynamic linker for DJGPP, called DLX, is available from the DJGPP sites.
- X library:
- Ports of various GNU utilities not included in DJGPP:
- GUI libraries:
- SWORD (an acronym for System With Objects for Rapid Development) is
a set of C++ classes that provide the developer with a portable
development environment. SWORD classes cover subject such as
building graphical user interface, date/time, files, network (socket
client and server), strings, random numbers, vectors and matrices.
SWORD was written and maintained by Eric Nicolas and the Sword Group. The latest version
3.0beta06.1 is available from the SWORD download site. An older
version 2.10 is available together with DJGPP, in the v2tk directory as sw21_*.zip.
SWORD is a powerful system for dedicated programmers, specifically
designed to allow a programmer to learn GUI programming. However, I'm
told that its documentation might not be clear enough for beginners;
documentation for version 3.0 is being worked on.
- JPTUI is an object-oriented textual user interface, written by
Jean-Pierre Delprat. It is designed for
C++, and supports several languages besides US English. You can get
JPTUI from SimTel.NET or any of its mirrors.
- the BCGUI package, written by Bill Currie; you can get it from Bill upon request.
- Salvador Eduardo Tropea (SET) maintains a
DJGPP port of Borland's Turbo Vision. This port also supports the Linux
console. For more info on this port, visit the DJGPP port of TVision site.
The latest version of TVision is available with the rest of DJGPP from SimTel.NET. Instructions for
installing TVision are available in the HOWTO repository.
- Another port of TVision was done by Robert Hoehne. Due to copyright problems, that port cannot be
distributed (at Borland's request, Robert has removed it from his Web
page). So you will have to get the Turbo Vision sources from the
patch them using patches included in the RHIDE distribution, and rebuild
- A Turbo Vision like library for plain C, called C-Desktop, by
Brett Porter, is available from DJGPP sites
on SimTel.NET mirrors.
- Another GUI library is XView-PC GUI interface, maintained by
Antonio Carlos M. de Queiroz. XView-PC is
available via the Web and
also via the FTP transfer.
- MGUI is a cross-platform C/C++ GUI library for DOS, Windows 3.X
and 9X/NT, and Unix X Window environments. The DJGPP version is based
on GRX. MGUI is available fromSimTel.NET mirrors.
- Game programming:
- The best library for game programming is the Allegro game programming library,
written and maintained by Shawn Hargreaves; also available from Allegro home page. Allegro is ported to X under Linux, to MS-Windows
using MSVC, and can also be compiled with Watcom compiler. A
tutorial for game programming, called Allegro Vivace, was written by
George Foot, and is available
from George's home page.
- Also try Jlib written by
J P Griffiths. This library is best
suited to multi-platform game programming, since it's portable to
Linux, MSVC, Watcom, and X11. Visit the Jlib Web page, for the latest
- Another popular library for game development is MGL, the
MegaGraphics Library by SciTech Software. MGL provides
transparent support for DirectX, OpenGL, Mesa, and several other popular
graphics standards (although some of these standards reportedly only
work when used with RSXNTDJ). The latest version 4.1 has full DJGPP
support. MGL is available from SciTech's FTP site.
- The Mesa library itself supports DJGPP and is available from the Mesa home page.
- Yet another package that supports DirectX 5 for DJGPP and RSXNTDJ is
available via the Web.
- FreeBE/AF is a free implementation of the VBE/AF graphics driver
API, which provides high performance 2D hardware acceleration for
packages such as Allegro and SciTech MGL; it is available from SimTel.
- VGA graphics:
- Paul Fenwick wrote an X-Mode package
Xlib at Oulu.
- Matthew Bentley has written a C++ VGA
graphics library for mode 13h (and is reportedly 4 times faster than
Allegro in this mode) called EZVGA. It is available as ezvga14.zip from
v2tk directory on DJGPP sites.
- Multi-tasking libraries and OS kernels:
- Pthreads, a Posix threads
library, is a portable, standard package supported on many platforms.
- The LWP package is a lightweight preemptive multitasking library written
by Josh Turpen for DJGPP. It has an
extremely simple API and is very fast. You can get LWP via the Web.
- PDMLWP is a multithreading package for DJGPP. It is available as
NN is a version number) from the
directory on the DJGPP sites.
- Bill Currie has written a COFF boot
loader using DJGPP; you can get this COFF boot loader from Alaric Williams' Web site.
- Palantir is a multitasking kernel for Allegro, written and maintained by
Dim Zegebart. Palantir is available
from DJGPP sites and
- Development toolkits and packages:
- MSS is a package for detecting problems with dynamic memory allocation,
such as using uninitialized memory, overwriting the limits of allocated
blocks, memory leaks, repeated deallocations, etc. It is available
from the DJGPP sites, and supports both C
and C++ programs. MSS was written and is maintained by Peter Palotas.
- Another package for debugging memory-related problems is
- YAMD is yet another malloc debugging package; it was written by
Nate Eldredge and is available from Nate's home page.
- Cdecl is a program for translating hairy C and C++ declarations and
type casts into human-readable English. A DJGPP port by Nate Eldredge
is available via FTP.
- LCLINT is a Lint clone. Lint is a program which analyses C source
files, identifies unsafe or potentially buggy code and prints
error/warning messages about each such case.
gcc -Wall can
identify many such cases as well, due to the superior diagnostics of
GCC, but for those who still want Lint, you can find LCLint sources on the Web.
- VIM is a programmer's editor, mostly popular in the Unix world. It
features syntax highlighting for more than 60 different file formats,
context-sensitive help, and a macro language for writing extensions.
The sources are available via ftp, and should compile with DJGPP.
Binaries are available for Windows 9X and NT, as well as for DOS.
SeeR is a scripting engine to use in extensible programs. It
features basic C and C++ operators and data types, access to C and
C++ functions and classes, support for multitasking, ability to run
several scripts at the same time, etc.
SeeR was written by
Przemyslaw Arkadiusz Podsiadly, and is
available from his Web page.
- Nate Eldredge wrote a library of farptr
versions of most of the mem*/str* library functions. You can get this
library from Nate's home page.
- Berkeley Yacc,
both ported by Juan Manuel Guerrero, are available from the
v2apps directory on the DJGPP sites.
- Interface with Windows:
libwin is a library of functions that allow DJGPP programs to
interface with some Windows services. This includes clipboard and
registry access, control of the DOS box and virtual machine titles, and
interface with Windows Virtual Devices, VxDs in short. The
library can be downloaded via the Web.
libmslot is a library of functions for using the Windows LAN
Manager Mailslot API, which is a unidirectional form of Interprocess
Communication (IPC) facility. It was written by Richard Dawe, and is available from his home page.
LibINI is a library for manipulating Windows style
configuration files. You can find it in the programming section of