Can I increase memory vailable to DOS in XP ?

December 30, 2010 at 15:39:09
Specs: Windows XP Pro

While trying to compile a QuickBasic Vrn 7 Program, I get an out of memory error. It worked fine in W'98.

How can I increase the memory available in "DOS" (I know it's not real DOS) ?


See More: Can I increase memory vailable to DOS in XP ?

Report •


#1
December 31, 2010 at 03:14:04

The easiest way to increase conventional memory space for the NTVDM 16 bit subsystem is the following:

- Open in Notepad C:\Windows\system32\autoexec.nt
- Disable the DPMI support Ren lh %SystemRoot%\system32\DOSX
- Disable CD support Ren lh %SystemRoot%\system32\mscdexnt.exe

Disabling DPMI adds 32K to low memory but it works only if the legacy application does not run in DOS protected mode.

There are other methods to configure and fine tune DOS memory under Windows XP, but they require a careful analysis of the legacy application environment.


Report •

#2
January 1, 2011 at 06:20:53

Unfortunately, this did not increase memory by much:

Before amending AUTOEXEC.NT:

655360 bytes total conventional memory
655360 bytes available to MS-DOS
625152 largest executable program size

1048576 bytes total contiguous extended memory
0 bytes available contiguous extended memory
941056 bytes available XMS memory
MS-DOS resident in High Memory Area

After amending AUTOEXEC.NT:

655360 bytes total conventional memory
655360 bytes available to MS-DOS
625392 largest executable program size

1048576 bytes total contiguous extended memory
0 bytes available contiguous extended memory
983040 bytes available XMS memory
MS-DOS resident in High Memory Area

I.E. Largest exe size increased by 240 bytes.

To recompile the programme, I removed some redundant code. However, this is not an ideal solution. I reckon there must be another way ...

Thanks for helping anyway.

Colin


Report •

#3
January 1, 2011 at 10:42:36

Your system offers a conventional DOS memory better optimized than I usually can achieve (I am running on DOS 604K under XP), but that is the highest value you can achieve and it is larger than what native real DOS can offer.

It is a mistery how you could compile under DOS kernel based Windows 98.


Report •

Related Solutions

#4
January 1, 2011 at 16:27:27

It's a long time ago (in cyber terms) & I can't quite remember how we did it, but maximising memory was something we always worked on, something about DOS being loaded high. If I can find the W'98 m/c (mislaid after a house move) I will fire it up for a look-see, but we must have done it somehow as the programme in question was under intensive development between 1992 & 1997. Perhaps the larger modules only compiled under previous versions of Windows; but I'm certain I did some upgrades on a W'98 m/c., the last one being in 2003.

Report •

#5
January 2, 2011 at 06:14:27

I carefully examined your issue and here what I worked out:

The max amount of conventional DOS (NTVDM 16 bit builtin emulator) available under XP is 612K (627008 bytes) running cmd.exe as command interpreter instead of command.com (NT version of course).

Cmd.exe is compatible and support 16 bit legacy applications relying upon NTVDM.

To force instancing cmd.exe while running a legacy program (as your QuickBasic compiler) open a NT console window by Start/Run cmd.exe or create a shortcut to cmd.exe THEN run inside that window your application.

This is the ultimate solution I can give you and hope that helps. An alternate way would be to setup a virtual machine as MS Virtual PC (free) and install as guest OS FreeDOS (free Open Source DOS clone) that has a very compact kernel, but the gain in size of available memory is questionable.


Report •


Ask Question