a GEM Dynamical Library system for TOS computer
Current version: LDG 2.35 (5 June 2015)
What is LDG ?
LDG stands for Gem Dynamical Libraries (actually Librairies Dynamiques GEM in french). It's a system allowing GEM applications to load and to share externals modules. For example, an image viewer could use the JPEG.LDG plugin to load a jpeg image... and in the same time, another program can use the same JPEG.LDG plugin to load anothe rimage or to save an image. You'll find later some examples of program that uses LDG system.
The LDG system (and this web site) concerns two kind of audience :
- end-users who don't have to know anything about technical stuff
- programmers who want to develop a LDG or an application which uses external LDG
Nothing has to be installed (although we encourage users to install the LDG system, as explained later). Any application can successfully load external LDG on a computer where the LDG system is not installed.
By the way, we encourage users to install the LDG system. Once the system is installed (LDG.PRG in AUTO, LDG.CPX in CPX, and a deamon to launch at startup... all of them automatically installed by a nice installer provided in the LDG package), the immediat benefit will be:
- the path where LDG are loaded is configurable (by using the CPX). You can then put your LDG directory wherever you want.
- LDG may be shareable : if several applications use the same LDG, then this LDG is loaded only once in memory (without installation, each application load its own copy of the LDG).
- LDG libraries and applications will use functions of the LDG system (AUTO program) instead of their built-in LDG functions. If you install a new LDG system with new features or bug fixes, then all your applications and LDG libraries will benefit from them.
For C programmers, the LDG-DEV package is what you need. This package contains C-library and header file to built LDG and applications that load LDG. The library is provided for GCC 4 and Pure C compilers.
If you want some more stuff (documentation, example...), then you should download the main LDG package.
If you want to develop LDG or applications that load LDG with another programming language, it is possible too (you have to "port" the LDG-DEV package to your language). You can also rely on the LDGM cookie, but your application will then only work if LDG2 is installed on the machine.
You can found additional very interesting informations from Mikro here
- What's new ?
- Release of LDG 2.35 full version: Fix ldg path record in ldg_open() add coldfire version
- Release of LDG-DEV 2.34 : Fix ldg_close() bug (API and TSR), add coldfire version.
- Release of LDG-DEV 2.33 (new package for developpers only).
- Yes ! Finally LDG moves to SF in order to enhance multi authors development. Old LDG site will be removed.
- Adding new libs (December 2004): XML 1.10, TinyGL 0.45, SDL 1.1.
- Release of LDG 2.32 (August 2004). This release addresses just the legal use of LDG : LDG is now distributed under conditions specified by the LGPL license.
- Release of LDG 2.31 (somewhere in 2003) : This is minor release
- one bug has been fixed on the way LDG looks for a library when one specify its path with MiNT convention.
- For hackers : the devel C library is now totaly independant on the GEM library used. That means it is not necessary to link a LDG module with the GEM library and any GEM library can be used if needed. As LDG is independant of the GEM library, you need to specify the GEM header file before including 'ldg.h'.
- LDG and its utilities have been recompiled using the last version of Gemlib (pl43).
Since the project is now hosted by SF.NET, we use its File Release System. All "new" packages may be downloaded from the sourceforge.net download page of our project.
The LDG developper kit
The LDG package contains:
- the LDG system (TSR, CPX and Manager) ,
- an hypertext documentation,
- PureC, Gcc libraries to create LDG client and libraries and include
- tools to check your environment and libraries, to install and update properly your libraries,
- example of LDG-library and LDG-client,
- MEM.LDG, a memory manager for LDG-libraries.
- All binary are for 68K and Coldfire except for the CPX and mem.ldg
The LDG-DEV package contains:
- header file (ldg.h)
- library (libldg.a)
The LDG-DEV package is only usefull for developpers. The main interesting feature is the RPM version of LDG-DEV : the header file and the library are automatically installed in the right directory. The RPM version only exists for gcc target.
Please note that the LDG-DEV package doesn't come with any documentation nor example. It's recommanded to get the main LDG package. The LDG-DEV package is only usefull to upgrade your LDG developpement environment.
Available LDG libraries
Here is a list of LDG libraries :
|Mesa GL 2.5||ported by Olivier Landemarre||0.9||A free clone of Open GL.|
|Mesa GL 6.2||ported by Patrice Mandin||1.4||A free clone of Open GL.|
|SDL 1.2.7||ported by Patrice Mandin||1.1||Simple Directmedia Layer : an universal multimedia library|
||ported by Olivier Landemarre||0.45||A light version of MesaGL, virtual reality oriented.|
|Screen||Olivier Landemarre||2.05||An universal true color screen driver including dithering
functionalities. 02 January 2015
Thanks to Guillaume Tello, Eric Reboux and Arnaud Bercegeay for their huge technical assistance
|Double||Olivier Landemarre||1.00||Convert diffrent format of double (double 80bits PureC, 96bits PureC, 64bit IEEE754 (GCC)).|
|ME||Arnaud Bercegeay||1.00||The Parx R&M protocol adapted to LDG.|
|Zview Image codecs||Zorro||1.00||Various image codecs (jpg,bmp,img,png,gif,tga,degas) used by Zview|
|Xml||Phillipe Castella & Arnaud Bercegeay||1.10||A module handling XML-files with PULL mode. Documentation is available from the previous version (xml 1.04)|
|Mem||Dominique Béréziat||0.50||A memory manager for shared libraries. It is a part of LDG package.|
|FileUtil||Dominique Béréziat||0.20||Files utilities. It is a part of LDG package.|
|MOD||Jean-Marc Stocklausen||0.1a||Player of MOD soundtrack, (PaulNG uses it).|
|PCI||Jean-Marc Stocklausen||0.2b||A library to interface PCI Bios, there is a client, (PCI Information which uses it).|
|Cookies||Nicolas Richeton||1.01||System CookieJar utilities.|
|DHST||Nicolas Richeton||??||Document HiSToric utilities (GEM protocol).|
|Codecs for Zview||Lonny Pursell||??||Several LDG codecs for Zview :TGA, BMP, GIF, STAD,Art director, PBM, Truepaint/Prismpaint, IFF, Doodle, COLR Object editor, ASCII art...|
You can browse our libs directory too. If you have developped some LDG-libraries, please contact us...
Example of LDG usage
Here is a list of some applications that use the LDG system:
- zView from Zorro uses zcodecs LDG to load images
- Eureka uses MESA.LDG or TINY.LDG for opengl rendering
- MyAES uses LDG system for its windframe plugin, SCREEN.LDG for dithering and JPEG.LDG from ZVIEW.
- TeaTime uses the XML.LDG plugin to parse a xml file
- riri2 uses ME.LDG to load images, and SCREEN.LDG to dither, zoom and display images.
- MxPlay from Mikro
- Most Pierre Thontat software from GFA!
- Kronos bench Mark for all tests and SCREEN.LDG
- LDG INFO is an powerfull tool to check and update yours LDG-libraries (by Arnaud Bercegeay).
- Libshare (by Arnaud Bercegeay): "A dirty patch to build shareable LDG against mintlib"
- Mon LDG is a LDG monitor which display in real time list of libraries used and their client applications.
- LDG system calls are specified in the TOS functions database GEMTOS.
Authors (and contacts)
LDG are developped by :
- Dominique Béréziat (Falcon, Mint, MagiC, PureC)
- Olivier Landemarre (Gcc, Aranym)
- Arnaud Bercegeay (gcc 295, SpareMint, Milan),
- Mikro (fix severals bugs (ldg_close))
- Vincent Rivière (add coldfire patch)