Xref: news-dnh.mv.net comp.os.msdos.djgpp:223 Path: news-dnh.mv.net!mv!news.sprintlink.net!howland.reston.ans.net!swrinde!news.uh.edu!uuneo.neosoft.com!news!sandmann From: Charles Sandmann Newsgroups: comp.os.msdos.djgpp Subject: Re: GO32 leaving, here comes ??? Date: Wed, 07 Jun 1995 15:52:12 CDT Organization: NeoSoft Internet Services +1 713 968 5800 Lines: 44 References: Reply-To: sandmann AT praline DOT no DOT NeoSoft DOT com Nntp-Posting-Host: praline.no.neosoft.com To: djgpp AT sun DOT soe DOT clarkson DOT edu Dj-Gateway: from newsgroup comp.os.msdos.djgpp > I've been following the talk about go32 going away in DJGPP v2+ and I'm not > entirely clear on what the new convention will be. I know it has something to > do with DPMI, but the details are vague to me. OK. GO32 does the following in V1.x 1) Protected mode memory/paging/mode switches 2) Command line expansion 3) A built in "extender" 4) Loads 387 emulator if needed 5) Graphics driver loading and page fault to bank swap emulation 6) Writing to the mono monitor if present and requested 7) Handling HW interrupts which happen in protected mode 8) Loading debuggers 9) Loading the image 10) And lots of other stuff The Protected Mode (PM) memory/paging/mode switching code is only used if you are not running under DPMI. DPMI provides those functions for you so GO32 does not need to provide them. In V2, virtually all of the functions above are handled in 32 bit GCC or GAS code intead of Go32 code built with TCC. There is a micro-stub which is appended to the start of each image which loads the image into PM memory using DPMI services. If DPMI is not available, a free DPMI server called CWSDPMI is loaded so the image can run. So, there is no need for "custom" go32.exe versions in V2, since all of the custom code would be built into the image itself. A single .EXE file should run under any DPMI system (no need to have GO32 in the path). If DPMI is not available, puting CWSDPMI in the same directory as the image or in your path will load it (or it can be used as a TSR). CWSDPMI is based on GO32, but is reentrant so only one copy is needed in memory for multiple nested DJGPP apps, and has all of the non-essential goodies removed so it has a smaller memory footprint (50K instead of 130K). CWSDPMI is not DJGPP specific - it can be used with other software. If you are using Windows (or some other DPMI) CWSDPMI is not needed at all. The only 16 bit code (if you have DPMI) is in the micro-stub (about 2Kb) and is assembled by djasm, a free assembler DJ provides with V2. So V2 should be completely buildable with FSF tools. At some future date, I will finish the re-write of CWSDPMI into djasm and GCC code, so the entire package will be builable with FSF tools.