DOS/16M

Tenberry Home

Consulting Services

DOS/16M FAQ

Release Notes

DPMI Spec

* * *

DOS/4GW

DOS/4G

DOS/16M FAQ - Index and Questions

This is the HTML edition of the FAQ for the DOS/16M DOS extender from Tenberry Software. It was last updated on February 7, 2003.

For further technical support on DOS/16M from Tenberry Software, send email to <16msupport@tenberry.com>.

This FAQ is also accessible as a single 20KB text file at ftp://ftp.tenberry.com/pub/16mfaq.txt, or as a 8KB zip file at ftp://ftp.tenberry.com/pub/16mfaq.zip.


List of Topic Areas:

  1. What is DOS/16M?

  2. Compatibility

  3. Interrupt Handling

  4. Debugging

  5. Memory Management

  6. Error Conditions

  7. Virtual Memory Manager

  8. DMA Addressing


List of Questions in each Topic Area:

  1. What is DOS/16M?

    1. Is DOS/16M a replacement for DOS?
    2. What is a DOS extender?
    3. What is Protected Mode?
    4. What is Real Mode?
    5. How Does a DOS Extender Work?
    6. What happens when my program makes a DOS request -- does DOS/16M handle it?
    7. How about BIOS requests?
    8. How about TSR or device driver calls?
    9. All this seems complicated -- why bother?
    10. All this seems complicated -- will my program slow down?
    11. Can I use my existing 16-bit compiler?

  2. Compatibility

    1. My DOS/16M program won't run in a Windows 95 DOS box. When I start the program, I get a popup in Win95 that says Windows needs DOS16M.DLL in order to run this program?
    2. Why won't Windows 95/98 run my application -- it says it needs NELOAD.EXE?
    3. Why won't Windows NT run my application -- it says it needs DOS16M.DLL?
    4. Why won't Windows NT run my application -- it says it needs NELOAD.EXE?
    5. How does a protected mode program that calls a real mode TSR provide access to the protected mode program's environment?
    6. I'm running DOS/16M programs from a batch file. While some returns are not errors, General Protection Faults seems to mess things up. Does DOS/16M send back a return code to DOS that I can trap on?
    7. I'm having a problem getting my program to run in an OS/2 Warp 3.0 DOS Box. I get DOS16M Error [16] : Cannot run under OS/2?
    8. I recently installed Windows 95. Whenever I run the Instant-D debugger, single-stepping resumes execution as if GO had been invoked. Is the Instant-D debugger compatible with Windows 95?
    9. Why am I getting error 32 (DPMI host error) when I try to run a DOS/16M program from within NMAKE?
    10. How can I load and access a real mode DLL from a DOS/16M program?
    11. Why can't I look at the ROM BIOS from my DOS/16M program with QEMM stealth mode active?
    12. Do you know of any problems with INT 24h, which misbehaves in somewhat different ways under DOS, the Windows DOS box and the OS/2 DOS box?
    13. I have a program built with your 32 bit extender that spawns a DOS/16M application. This arrangement works works fine, except in a Windows DOS box?
    14. Is DOS/16M compatible with Linux DOS emulation?
    15. Why does my DOS/16M program run perfectly on some machines and hang on others?

  3. Interrupt Handling

    1. I have a protected mode handler installed as a TSR and signaled via protected mode int 7C. To determine elapsed time, the handler calls the Microsoft library function clock(), signals int 7C, calls clock() again, and checks the difference. I'm finding that erratic values are returned. Do you have any suggestions as to what might be causing this?
    2. If one protected mode program installs a bi-modal communications handler and a second protected mode program is active when a communications interrupt is signaled, will there be any kind of conflict?
    3. Why won't the Microsoft _bios_disk() function work with DOS/16M?
    4. Why is it that when called from an interrupt handler, pointers (32-bit offsets) passed as parameters to an assembly language routine reference incorrect segment register (this works if pointers are global rather than automatic), but when called from non-interrupt code, the same routine behaves correctly?
    5. I'm writing a bi-modal communications handler and I want the real mode handler to access data in high memory. Is there any way I can switch from real to protected mode in a DPMI environment to access data in high memory?

  4. Debugging

    1. Under plain DOS, Instant-D tells me the selector at which d16LoadEXP() loaded the program. Under Windows, however, because the Windows VMM loads the program, I don't get that information. How do I know at what selector I should merge the symbols for the overloaded program?
    2. I'm trying to use Instant-D performance monitor from within a Windows DOS box and I'm getting an error, 'interloper on PM int 70', when I type 'sam on'. Why?
    3. When I attempt to load symbols into Instant-D, the MERGESYM command tells me I have no storage for source, yet the LIM command says there is over 1 MB left for source. What's going on?
    4. How can I debug the real-mode interrupt handler part of a bimodal interrupt handler?

  5. Memory Management

    1. How do I address super-VGA video memory?
    2. Can I move a segment at runtime that was loaded into extended memory at load time?
    3. Does d16ReallocSeg() physically copy everything in the segment?
    4. Can I pass a pointer in the middle of the segment to d16ReallocSeg() and get the whole segment?
    5. Why can't I access all 128MB of physical memory available on my machine?
    6. How can I allocate a block of memory in protected mode that doesn't cross a page boundary?

  6. Error Conditions

    1. One of my customers is getting the message 'Extended error 4' while running our application built with DOS/16M, and then the application hangs. Does 'Extended error' refer to the DOS extender? Is this a DOS/16M error?

  7. Virtual Memory Manager

    1. Do you recommend using the DOS/16M Virtual Memory Manager (VMM)?
    2. Are there any other reasons to not use the DOS/16M VMM?
    3. Can a block of memory allocated under the MPreferLow strategy ever be swapped out?

  8. DMA Addressing

    1. My TSR currently uses 26K of conventional memory. I can reduce this number even more by allocating the sound card DMA buffer from extended memory. Is this worth the effort?
Note: The DPMI 0.9 specification is also available at the Tenberry web site at http://www.tenberry.com/dpmi/index.html.


[DOS/16M] * [Tenberry Home] * [News] * [DOS/4GW] * [DOS/4G]
Last modified 2003.02.07, Your questions, comments, and feedback are welcome.