Xref: news2.mv.net comp.os.msdos.djgpp:3543 From: malcolm AT manawatu DOT gen DOT nz (Malcolm Taylor) Newsgroups: comp.os.msdos.djgpp Subject: Re: dxegen questions Date: Wed, 08 May 1996 01:02:20 GMT Organization: Grafik Software Lines: 32 Message-ID: <4movfi$gf8@news.manawatu.gen.nz> References: <318872e1 DOT 110404129 AT news DOT webstar DOT net> <318b9699 DOT sandmann AT clio DOT rice DOT edu> <4mhk1g$8c3 AT groa DOT uct DOT ac DOT za> Reply-To: malcolm AT manawatu DOT gen DOT nz NNTP-Posting-Host: malcolm.manawatu.gen.nz Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp fnunez AT cs DOT uct DOT ac DOT za (Fabian Nunez) wrote: >In <318b9699 DOT sandmann AT clio DOT rice DOT edu> Charles Sandmann writes: >>src/dxe/dxegen.doc is the only thing I ever wrote about it - and I >>never enhanced the docs or put them into the info format, sorry. >>I really wrote it for loadable graphics device drivers and emu387 >>support, neither which needed I/O, with a goal to have the tiniest >>footprint possible. >I tried to write a loadable VESA 2 module using a DXE and all I got was >segmentation violations. The code worked fine if statically linked, so >my guess is that DXE's have problems talking to the __dpmi and _go32_dpmi >functions, same as with printf, etc. Any ideas for a workaround, or have I >found a bug? (BTW, I looked at the old '94 version of DLL's for DJGPP V1, >and it allowed for sharing variables and functions with the main executable - >why was this removed from DXE's? it seems like a good idea to me) Charles answered this above. The code for loading DXE's is always linked into every v2 executable, so there was a priority on getting the size small. One of the easiest ways to make a DXE work is to not use any library functions. If you do use some functions that won't work then pass them as pointers to your DXE when it loads. A very general approach is to setup an array of function pointers that you pass to an initialisation function in the DXE. DLL support is a hard subject. My personal opinion is that it should wait for someone to write Win32(s) support, hence much more standard DLLs. Malcolm