ID:MT Multitasking in DESQview
Quarterdeck Technical Note #152
by Stan Young
last revision: 11 February 1992
One of the features of DESQview is the ability to provide for the multi-
tasking or background processing of a program. This feature allows the user
to start an operation which will not require user intervention and then switch
to another task while the operation continues in background.
While multi-tasking is certainly a useful feature, it is important to
note that DESQview cannot provide multi-tasking all by itself. A program's
ability to multi-task in DESQview is dependent on the setup of the program,
the hardware being used, and, in some cases, the way the program has been
What is absolutely required:
SETUP: First, in order to multi-task a program must be set up so that it is
allowed to multi-task. Under the default setup for a program added to the
DESQview menu by choosing the "Other" selection from the Add A Program menu,
DESQview assumes several things that prevent multi-tasking.
* DESQview assumes the program "Writes directly to the screen."
* DESQview assumes that if the program writes directly to screen and the
machine is not a 386 with QEMM, it does not "Run in background."
Given that DESQview assumes that the program runs only in foreground,
under the defaults, the program will not run in background even if otherwise
capable of doing so. Therefore it is necessary to modify the default setup
using "Change a Program" to see if the program can run in background. The
first thing to determine is whether the program actually "Writes directly to
screen" (see below). If it does not, and you set the "Writes directly to
screen" option to "N", DESQview will allow the program to run in the
MEMORY: Second, in order to multi-task a program must be able to remain in
active, addressable RAM. Multi-tasking is an internal function of DESQview,
and DESQview does not REQUIRE any add-on in order to multi-task. HOWEVER,
640K can certainly be a limited environment if you are trying to multi-task
large programs. If you are planning to multi-task large programs, you may
need to purchase additional memory.
The only types of memory which currently can be used for multi-tasking
beyond 640K are EEMS memory, EMS 4.0 memory ON A FULLY FUNCTIONAL EMS 4.0
BOARD (an EMS 4.0 driver on old-style EMS 3.2 board will not suffice) or
exTENDed memory on a 386 machine with QEMM, CEMM, or compatible 386 expanded
If your machine's memory configuration is such that the program must be
swapped out to disk, ramdisk, or EMS or EEMS memory, then the processing of
that program will be interrupted. You will know this has happened if you get
a "Swapping..." message when switching from the program. If this is happening
and you have configured your programs to minimum memory sizes, the only thing
that can allow you to achieve multi-tasking is to increase the number or size
of the addressable memory partitions available to DESQview. As indicated
before, this may require additional hardware.
More information on this subject can be found in the DESQview manual
under the appendix, "Using Expanded Memory with DESQview".
What is usually desired:
SCREEN MANAGEMENT - Another item that is usually necessary for effective
background processing, although not absolutely required, is for DESQview to be
able to provide screen management.
A program which actually "Writes directly to screen" cannot have its
screen output managed by DESQview. Therefore, if it is running in the
background and updates the screen, what it writes will print through on the
screen of the foreground application.
Testing to see if the program writes directly to screen:
All graphics based programs write directly to screen; however if your
program runs in character mode, you should try setting it up in a window that
has the "Writes directly to screen" option set to "N". Then invoke the
program, allowing it to come up in a small DESQview window. If the program
loads into the window without writing outside the window frame, the program
does not write directly to screen and should operate properly in the
background. If the program does print outside the window frame, the program
does write directly to screen and you will have to evaluate for yourself
whether running it in the background would upset your foreground operation too
On a 386 machine, Quarterdeck's QEMM-386 driver provides virtualization
of the screen in text, CGA, EGA, Hercules Monographics, and VGA graphics mode
so that programs using those modes can run with their screens managed by
DESQview regardless of whether they write directly to screen or not. If the
programs switch modes in background (for instance, switch from text to
graphics), you must explicitly set the "Runs in background" option to "Y".
Keyboard and mouse handling:
Programs running in background should be well behaved with regard to
their use of the keyboard. If they are not, running them in the background
may cause problems with using the keyboard in the foreground window. In some
cases, setting "Keyboard Conflict" to 4 using Change a Program can alleviate
this problem. Setting "Maintain separate shift states" to "Y" in the DESQview
setup, advanced options, keyboard, may also be necessary to keep a program
running in the background from interfering with the foreground window's use of
DESQview versions prior to 2.2 do not currently support the background
operation of a program that is using the mouse unless that program is DESQview
aware. Running a program that uses the mouse in background will cause the
mouse to be lost for DESQview or other programs. As of version 2.2, DESQview
"virtualizes" the mouse so that non-DESQview aware programs "see" the mouse
only when in foreground.
*This technical note may be copied and distributed freely as long as it*
*is distributed in its entirety and it is not distributed for profit. *
* Copyright (C) 1991-2 by Quarterdeck Office Systems *
************************ E N D O F F I L E *************************