Hi, replying to myself based on comments by Navis, with some interesting points about using 2 GB to 4 GB of RAM with DPMI based DOS extenders... :-)
> Hi! If I have to guess, the latter (a DPMI call, I think) > deliberately returns at most 2 GB to avoid sign overflows > with software which uses 32 bit signed computation of how > much memory it has :-) Maybe DOS32A has an option to let Of course YOUR software can be safe, but DOS32A is the same for all users, so it probably just tries to avoid any risks. http://www.delorie.com/djgpp/doc/dpmi/api/310500.html tells me that "-1" (or 4 GB - 1 byte) is an placeholder in size info: Some software might simply treat any value which is negative as a placeholder, so DOS32A might not want to show any values larger than 2 GB... > you disable that limiting if you dare. Or try HDPMI32 or > CWSDPMI in various version or other DPMI drivers? And, if Instead of DOS32A, you can also use other "DPMI" software, typically by loading it before starting your own program, or by connecting it instead of DOS32A to your program. It could be some tool with "stub" in the name which does it. http://homer.rice.edu/~sandmann/cwsdpmi/index.html http://web.archive.org/web/20140904175113/http://www.japheth.de/HX.html (HX DOS extender: can run simple Windows software in DOS, and comes with a tool called HDPMI which provides DPMI...) http://www.sudleyplace.com/dpmione/ See also: https://en.wikipedia.org/wiki/DOS32A http://dos32a.narechk.net/manual/html/tech/8.htm This says that DOS/32 can allocate *at most 2 GB of RAM* by using XMS 3.0 compatible drivers to allocate memory, but only 256 MB from VCPI (EMM386) so then it will try to get the remaining memory from XMS 3.0 :-) http://dos32a.narechk.net/content/technical.html This says that via int 15h allocation, the limit still is 2 GB, so at least with DOS32A, you only get 2 GB. http://osdir.com/ml/emulators.freedos.general/2005-04/msg00086.html Says that the CWSDPMI at the time also had a 2 GB limit, but that DPMIONE can use more than 3 GB: However, this only worked if no EMM386 was used at the same time :-) You will still have to take care to not run out of any other resources before you have 3 GB used, e.g. handles. > I may be curious, what program are you writing which will > enjoy having more than 2 GB of RAM in DOS? You wrote: "Special very long chain data only", but what is it? > PS: You probably have 4 GB, of which some is not useable > because for example your graphics card reserves areas? It can still be reserved as I/O space for disk controllers, network, for ACPI or BIOS functions, and so on. You could ask http://www.delorie.com/djgpp/doc/rbinter/id/50/17.html (int 15.e820) to get a list of which area is for what :-) Regards, Eric ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user