dmwatt@athena.mit.edu (Dave Watt) (10/20/90)
Two things:
1) I've been making some small changes to Drew Derbyshire's free UUPC/extended
package to improve how it runs under Windows. I added code to tell one program
to give up its timeslice when it's running under Windows in enhanced mode, and
it's just waiting to dial the phone. But I discovered that having this UUPOLL
program running in background <really> slows down other DOS-programs I want to
run under Windows, especially programs with lots of high-resolution graphics.
It would be better if I could set UUPOLL to run at a low priority while it's
waiting for an hour, and then when the hour is up, giving it a high priority
so UUCP can run quickly, in addition to any giving-up-timeslice games. Does
anyone know how to do this in a DOS program?
2) For the curious, the information below explains how to identify whether
a DOS program is running under Windows in enhanced mode, give up your time-
slice, and set and end critical sections. I got it from PD1:<MSDOS.INFO>
INTER590.ZIP on simtel20 or wuarchive. The list is authoritative, complete,
and useful to anyone who does any DOS programming at all.
Thanks in advance!
- Dave Watt
INT 2F - Multiplex - MS WINDOWS - ENHANCED WINDOWS INSTALLATION CHECK
AX = 1600h
Return: AL = 00h if Enhanced Windows 3.x or Windows/386 2.x not running
AL = 80h if Enhanced Windows 3.x or Windows/386 2.x not running
AL = 01h if Windows/386 2.x running
AL = FFh if Windows/386 2.x running
AL = anything else
AL = Windows major version number >= 3
AH = Windows minor version number
Note: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
drivers, TSRs, and applications) to cooperate with multitasking
Windows/386 2.x and Windows 3.x and higher enhanced mode.
certain calls are also supported in the Microsoft 80286 DOS extender in
Windows standard mode
SeeAlso: AX=4680h
---------------------------------------------
INT 2F - Multiplex - MS Windows 3 - INSTALLATION CHECK
AX = 4680h
Return: AX = 0000h MS Windows 3.0 running in real (/R) or standard (/S) mode
nonzero no Windows, Windows prior to 3.0, or Windows3 in enhanced
mode
Note: not officially documented, but Microsoft has indicated that they
intend to provide an installation check which works in all modes
SeeAlso: AX=1600h
---------------------------------------------
INT 2Fh - Multiplex - MS WINDOWS - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE
AX = 1680h
Return: AL = 00h if the call is supported
AL = 80h (unchanged) if the call is not supported
Notes: programs can use this function, even when not running under Windows in
386 enhanced mode, because OS/2 can use the call to detect idleness
even though it does not support the complete enhanced Windows API.
this call will be supported in OS/2 2.0 for multitasking DOS
applications
does not block the program; it just gives up the remainder of the time
slice
---------------------------------------------
INT 2Fh - Multiplex - MS WINDOWS 3+ - BEGIN CRITICAL SECTION
AX = 1681h
Notes: used to prevent a task switch from occurring
should be followed by an INT 2F/AX=1682h call as soon as possible
not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and
and increment by hand.
SeeAlso: AX=1682h, INT 21/AH=34h
---------------------------------------------
INT 2Fh - Multiplex - MS WINDOWS 3+ - END CRITICAL SECTION
AX = 1682h
Note: not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h
and decrement by hand.