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:
- What is DOS/16M?
- Compatibility
- Interrupt Handling
- Debugging
- Memory Management
- Error Conditions
- Virtual Memory Manager
- DMA Addressing
List of Questions in each Topic Area:
- What is DOS/16M?
-
Is DOS/16M a replacement for DOS?
-
What is a DOS extender?
-
What is Protected Mode?
-
What is Real Mode?
-
How Does a DOS Extender Work?
-
What happens when my program makes a DOS request -- does
DOS/16M handle it?
-
How about BIOS requests?
-
How about TSR or device driver calls?
-
All this seems complicated -- why bother?
-
All this seems complicated -- will my program slow down?
-
Can I use my existing 16-bit compiler?
- Compatibility
-
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?
-
Why won't Windows 95/98 run my application -- it says it needs NELOAD.EXE?
-
Why won't Windows NT run my application -- it says it needs DOS16M.DLL?
-
Why won't Windows NT run my application -- it says it needs NELOAD.EXE?
-
How does a protected mode program that calls a real mode TSR
provide access to the protected mode program's environment?
-
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?
-
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?
-
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?
-
Why am I getting error 32 (DPMI host error) when I try to run a
DOS/16M program from within NMAKE?
-
How can I load and access a real mode DLL from a DOS/16M
program?
-
Why can't I look at the ROM BIOS from my DOS/16M program with QEMM
stealth mode active?
-
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?
-
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?
-
Is DOS/16M compatible with Linux DOS emulation?
-
Why does my DOS/16M program run perfectly on some machines and hang
on others?
- Interrupt Handling
-
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?
-
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?
-
Why won't the Microsoft _bios_disk() function work with
DOS/16M?
-
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?
-
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?
- Debugging
-
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?
-
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?
-
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?
-
How can I debug the real-mode interrupt handler part
of a bimodal interrupt handler?
- Memory Management
-
How do I address super-VGA video memory?
-
Can I move a segment at runtime
that was loaded into extended memory at load time?
-
Does d16ReallocSeg() physically copy everything
in the segment?
-
Can I pass a pointer in the middle of the segment
to d16ReallocSeg() and get the whole segment?
-
Why can't I access all 128MB of physical memory
available on my machine?
-
How can I allocate a block of memory in protected mode that doesn't
cross a page boundary?
- Error Conditions
-
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?
- Virtual Memory Manager
-
Do you recommend using the DOS/16M Virtual Memory Manager (VMM)?
-
Are there any other reasons to not use the DOS/16M VMM?
-
Can a block of memory allocated under the MPreferLow strategy
ever be swapped out?
- DMA Addressing
-
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?
|