From: "M. Schulter" Newsgroups: comp.os.msdos.djgpp Subject: Re: protected mode Date: 5 Oct 1997 21:53:39 GMT Organization: Value Net Internetwork Services Inc. Lines: 58 Message-ID: <619293$76t$1@vnetnews.value.net> References: <3426EC42 DOT 61DE AT club-internet DOT fr> NNTP-Posting-Host: value.net To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Charles Mennerat wrote: : Maybe you will think it's a silly question but how can we : use "protected mode" in djgpp.Do you have to do something special? : If you use protected mode does that mean if you have 16mo of ram : your program can use all the ram? Before attempting a quick and not so expert answer , I should refer you to some more informed sources. The DJGPP FAQ includes lots of material about protected mode, and address some of the basic problems that users often get into because they try to use real mode code that breaks the rules of protected mode. Also, you might want to take a look at a new resource: http://www.delorie.com/djgpp/doc/ug/ the DJGPP User's Guide, which includes a simple discussion about protected mode. There is more documentation in preparation by DJGPP users. Now for my not-so-expert information . First of all, DJGPP programs automatically run in 32-bit protected mode as DPMI (DOS Protected Mode Interface) clients. This is why you need at least an i386 or compatible to run these programs, together with some DPMI server. DJGPP itself includes CWSDPMI, a free DPMI server, and various utilities and environments such as QEMM (QDPMI), 386Max, Windows 3.x/9x/NT, OS/2, and Linux have their own DPMI providers. With DOS and QEMM, there's a choice to use either QDMPI or CWSDPMI; I tend to use the latter when writing C or assembler programs, because it has some extra bug-detection features. Next, let me emphasize that the protected mode is indeed automatic: each DJGPP program includes a 2K stub to enter protected mode. For example, I can write (and have written) DJGPP assembler programs that produce a 32-bit DOS executable in 3K or less! They compile with GAS, the GNU assembler; Charles W. Sandmann of CWSDPMI fame recently posted an example to show us the way. Similarly, C/C++ programs automatically get compiled to include the code necessary to run in protected mode, and without the need for a special DOS extender; you just need a DPMI server present to run the program. With 32-bit protected mode, you can access up to 4G of RAM; the amount of virtual memory additionally available (swapping to disk if there's not enough RAM) varies with the DPMI server, but CWSDPMI normally provides up to 128M, if I'm correct. In short, you don't have to do anything with DJGPP to get the benefits of protected mode, but you may have to _avoid_ doing certain things that work with at least some real-mode DOS compilers or assemblers. For more details, please see, for example, Sections 10, 17.4, and 18 of the DJGPP FAQ. Most respectfully, Margo Schulter mschulter AT value DOT net