              **** Cloaking vs. STEALTH  ****

April 1993

It has come to our attention that people would like an in-depth 
comparison of Helix Softwares Cloaking and Quarterdecks 
STEALTH technologies.  The following is a discussion of the 
differences between Cloaking (as implemented in NETROOM version 
3) and STEALTH (as implemented in QEMM version 6) in which we 
try to be objective, but of course we have a preference.  We 
welcome feedback.

This document discusses:

	How does STEALTH Work
	What is Cloaking
	The NETROOM Cloaked BIOSs
	Q & A:
		Can my programs now operate in extended memory
		Is Cloaking reliable
		How can the Cloaked BIOS work on all systems
		Does Cloaking work with Microsoft Windows
		What about programs that access the BIOS directly
		Will Cloaking work with SCSI and ESDI drives
	Which approach is better
	Conclusion

Before one can discuss the advantages and disadvantages of 
each, one must understand the basic technologies behind 
Cloaking and STEALTH.  These are two very different approaches 
to the problem of creating more usable memory in the region 
between 640K and 1Mb (well adopt Microsofts name for this 
region, "upper memory".)

How does STEALTH Work?

First well discuss STEALTH:  STEALTH has several methods of 
performing what is basically one task.  What STEALTH in ALL its 
modes does is use the 386/486 (well use 386 to mean 386 or 486 
from here on, unless a distinction is necessary) mapping 
capability to place mappable RAM over the BIOS and redirect all 
BIOS functions through the STEALTH upper memory resident 
program.  When activity occurs that requires the BIOS, QEMM 
uses the paging (mapping and paging are used interchangeably 
here) capabilities of the CPU to re-map the BIOS back into the 
conventional memory range.  The BIOS can then process as is 
needed and when it is done the mapping is restored to the state 
it was in prior to the switch.

The three modes of STEALTH dictate where the BIOS appears when 
it is mapped in.  In the :M and :F modes, when the BIOS is 
needed, it is mapped in to the EMS page frame region.  In the 
:P mode the BIOS is mapped in place, and the upper memory that 
has been placed over the BIOS is removed while the BIOS is 
processing.

STEALTH, in other words, can be viewed as a high-speed, bank 
switching, mini, multi tasking environment, sort of like a 
DesqView window that contains only the BIOS, while other 
programs execute in the "other" window.

There is more to STEALTH than that, because several issues 
become important when programs need to access the BIOS.  First 
is what happens to data that the BIOS needs to access that 
resides in the region that the BIOS is mapped over.  For 
example if a program is trying to write data from EMS to disk 
it would map the data into the EMS page frame and issue a DOS 
call to write the data to disk.  The DOS call would eventually 
filter down to a BIOS disk write call which would end up in 
QEMM/STEALTHs lap.  STEALTH then needs to map the BIOS in so 
that it can process the call.

But in order to map the BIOS in something has to be mapped 
out.  If STEALTH is mapping the BIOS into the page frame it 
first must map or copy the data someplace else, so that the 
BIOS can have access to it.

The next issue that complicates matters is the issue of 
interrupts.  What happens if an interrupt occurs, while the 
BIOS is active that is destined for a program in the "other 
window?"  Again, STEALTH must play a mapping game, switching 
the BIOS in and out.

STEALTH does an admirable job of keeping all this in harmony, 
except that to keep things simple under Windows (where things 
get really hairy) STEALTH cannot use its :P mode and thus 
requires that you use an EMS page frame.

What is Cloaking?

Cloaking is a completely different approach.  Cloaking is 
basically an API that allows programs that are "Cloaking aware" 
to load themselves into protected mode and run from there.

Before we go into more detail, a brief discussion of 386 modes 
is in order.  The 386 has two basic modes of operation: real 
and protected.  In Real mode the 386 is simply a very fast 8088 
with a few extra instructions.  In Real mode the 386 can access 
only 1Mb + 64K of RAM and is in most ways very similar to an 
8088

Protected mode is the second mode of operation of the 386.  In 
protected mode the 386 operates in a vastly different 
architecture that can access up to 4Gb of RAM and has the 
capability to perform hardware mapping and protection.  For the 
layman that means that the operating system can make programs 
think that any part of the systems physical memory appear to 
exist in any part of the address range (this is mapping,) and 
memory and other resources can be protected from accidental 
access by errant programs.

When the CPU is in protected mode DOS programs can be run, 
unaltered, in a special sub-mode of protected mode called 
virtual 86 mode (V86 mode.)  In V86 mode DOS programs can only 
run with some help from a protected mode program called a V86 
mode control program or host.  The main difference between V86 
mode and Real mode is that in V86 mode the mapping capability 
of the 386 is active as are the protection capabilities.  
However, programs running in the V86 environment are still 
constrained to addressing only 1Mb.

ALL memory managers, including NETROOM, QEMM and DOSs EMM386 
run DOS programs in V86 mode.  This means that the system IS 
ALWAYS RUNNING IN PROTECTED MODE while any memory manager is 
active.  Also, the memory manager is the V86 host program and 
thus is itself a full-fledged (not V86 mode) protected mode 
program, which in most cases runs outside the 1Mb V86 address 
range.

What the Cloaking API provides is an environment in which other 
programs can run outside the V86 memory space together with 
NETROOMs memory manager, RAM-MAN/386 (RM386).  These programs 
then become part of the V86 host environment under which DOS 
programs run in V86 mode.

For this to happen RM386 had to be modified so that other 
programs could gain access to certain required parts of the 386 
environment.  Programs running in protected mode must, at the 
very least, be able to access memory and perform I/O and RM386 
had to be somewhat re-structured to allow programs to do so.  
(For those with some familiarity with protected mode 
programming, RM386 had to allow programs to allocate selectors, 
issue INT instructions and access memory beyond the first 
megabyte.)  This is the essence of Cloaking.

The NETROOM Cloaked BIOSs

What NETROOM provides, that is somewhat comparable to STEALTH, 
is our Cloaked BIOS.  This is comparable to STEALTH only in the 
end result, which is that more upper memory is created.  In 
operation the NETROOM Cloaked BIOS is completely different.

The NETROOM Cloaked BIOS is a complete BIOS that has been 
modified to run in protected mode (the exact nature of what has 
to be changed in a program to allow it to run in protected mode 
as opposed to V86 mode is beyond the scope of this document, 
but the changes are not extensive and relate mainly to the use 
of selectors instead of segments.)

The operation of the Cloaked BIOS is fairly straightforward.  
When the Cloaked BIOS loads it reads the entire system 
configuration, queries the current BIOS and decides what kind 
of system is running and what options are enabled and so on.  
The Cloaked BIOS then takes over, loads into protected mode 
using the start-up parameters obtained from the systems own 
BIOS, and shuts down the old BIOS.

Several questions come to mind immediately.  Is this safe, 
arent all BIOSs different, isnt STEALTHs approach of hiding 
the systems own BIOS better, and so forth.  Well deal with 
all that in a moment, but first well deal with the VGA video 
BIOS which is handled somewhat differently.

NETROOM has two different methods for dealing with VGA BIOS.  
First we provide a standard VGA/SVGA BIOS which can substitute 
for a large variety of VGA and super VGA BIOSs in a similar 
manner to that described above for the System BIOS.  However we 
have also developed a special technique that allows NETROOM to 
Cloak your existing VGA BIOS.  Using a special method we 
developed we can actually copy an existing VGA BIOS into 
extended memory and run it there as if it were designed to run 
in protected mode.

Using this technique works on most VGA BIOSs but not all.  So 
NETROOM tests the BIOS (sort of like STEALTHs test) to see if 
your VGA BIOS can operate safely in protected mode.  NETROOMs 
CUSTOMIZE auto-installation utility performs this test and 
decides which method is best suited to a particular system.

To answer those other commonly asked questions:

Q: Does Cloaking allow all programs to run in extended memory.

A: Yes and no.  Cloaking is an API that allows any program that 
has been DESIGNED TO USE THE CLOAKING API run in extended 
memory.  However in most cases (except for some Video BIOSs) 
Cloaking will not allow DOS programs to run in extended 
memory.  However we provide in NETROOM several programs already 
designed to run Cloaked.  These programs take the place of 
common utilities and perform better using less memory.  The 
utilities provided are a DOS/Windows disk cache, screen saver, 
screen accelerator, virus protection and RAM drive.  And soon 
you will see many other vendors supporting the Cloaking API.

Q: Is Cloaking reliable?

A: First Cloaking is absolutely reliable because the Cloaked 
BIOS is DESIGNED to be Cloaked.  There is no question of errant 
instructions performing out of turn.  Second, the Cloaked BIOS 
was licensed from Award Software, a major BIOS manufacturer 
whose BIOSs can be found in machines from AST to Toshiba.  So 
compatibility is absolute and the BIOS is thoroughly tested.

Q: How can the Cloaked BIOS work on all systems when I know 
that all BIOSs have to be slightly different for each system 
design?

A: The Cloaked BIOS will work with most systems.  This is true 
because the differences between systems are almost entirely in 
the start-up code.  This code, known as the Power On Self Test 
or POST routines, must be slightly different for each system 
because it must initialize the systems motherboard chipset.  
The chipset (which is sometimes not a set but discreet 
electronics) controls various system specific parameters like 
the system board cache and shadow ram and so forth.

However once the POST routines are done, and the system starts 
the boot-up process then the BIOSs are all the same.  This, in 
fact, is a necessity because otherwise there would be no 
industry standards and all software would have to be machine 
specific.

So, our Cloaked BIOS takes over only after your own BIOS has 
initialized and set up the system board correctly.  Thus the 
Cloaked BIOS works almost universally as we provide BIOSs for 
all the major architectures, namely ISA, EISA, MCA and APM.

Q: But does Cloaking work with Windows?

A: A resounding YES.  Cloaked programs run in protected mode 
just like Windows programs.  When Windows starts up the Cloaked 
programs simply and automatically become Windows Virtual Device 
Drivers that are designed to operate with Windows smoothly and 
efficiently.

Q: What about programs that access the BIOS directly.

A: Programs that need to access the BIOS directly do so through 
a region of upper memory called the compatibility vectors.  The 
NETROOM Cloaked BIOS supports the use of these vectors and 
maintains all the direct entry points into the BIOS and 
maintains all the tables that programs expect and need to 
access.  This data is maintained in the top 4 (or sometimes 8) 
Kb of upper memory (which is where programs expect this 
information) so programs which access the BIOS directly, like 
debuggers and remote control software can continue to function.

Q: Will Cloaking work with SCSI and ESDI controllers?

A: Yes, these kinds of controllers come with their own BIOS 
which NETROOM will not touch.  Thus your hard disk will 
continue to be accessed normally through the controllers own 
BIOS and the rest of the BIOS functions will be performed by 
the NETROOM Cloaked BIOS.

Now to the heart of the matter, which approach is better?

Well, obviously we are biased, but here are some of the 
advantages of Cloaking.

1. The Cloaked BIOS operates faster than the STEALTHed BIOS 
because there is no slow mapping necessary.  It takes only 
roughly 10 machine instructions to switch from a DOS V86 
program to a protected mode program which is even fewer than is 
necessary to switch to a regular V86 mode BIOS, and is far 
fewer than is required to perform a mapping switch such as that 
performed by STEALTH.

2. The Cloaked BIOS is safer and more stable.  The Cloaked BIOS 
will not exhibit any intermittent problems because all the BIOS 
code is designed to be Cloaked.  When testing a STEALTHed BIOS 
QEMM cannot possibly test all of the code and so there can be 
some part of the BIOS which QEMM missed that does not operate 
when STEALTHed and when one of your programs activates that 
part of the BIOS ... crash!

3. Cloaking is a general purpose API so that other programs can 
be Cloaked as well.  As is evidenced by our Cloaked disk cache, 
screen saver and ram drive.  And look for other vendors to 
support Cloaking.

4. Cloaking can operate under Windows using standard Windows 
methodology.  Cloaking is more stable than STEALTH, which has 
to trick Windows into performing the pseudo multi tasking 
operations required for the BIOS to multi-task in a separate 
environment.

5. Cloaking does not require the use of an EMS page frame to 
operate with Windows and so can provide 64K more than STEALTH.  
This is particularly useful since all the latest software is 
either written for Windows, or based on DOS extenders and thus 
does not need access to EMS.

Is there anything STEALTH does better?

Well, frankly no, 1. STEALTH does allow certain special 
features (if any exist) of a particular BIOS to continue to be 
accessed where Cloaking will not.  For instance if your BIOS 
has a hot key to slow down the system for games you can 
continue to use it without re-booting.  Cloaking would require 
that you re-boot, slow down the system in setup and then 
continue.

However, STEALTH has no way to know if such features exist and 
thus cannot test to make sure that such features operate 
properly when STEALTHed.  Secondly, any such feature that 
involves data transfer (such as returning tables of information 
about the system) will invariably break.  And finally, Cloaking 
requires simply that you re-boot to gain access to these 
features -- not a bad trade-off for the performance and 
compatibility gains.

2. STEALTH can hide other ROMs besides the VGA and System 
BIOSs.  Cloaking cannot do this.  If your system has a hard 
disk controller with its own BIOS, Cloaking will not allow you 
to move or hide it whereas the :M mode of STEALTH will attempt 
to hide all BIOSs on your system.  So if you have such a BIOS 
and you need to use EMS you may gain more memory by using 
STEALTH (but not if you use any of our other Cloaked utilities.)

However there is a major drawback to this feature of STEALTH in 
that, again, STEALTH is unable to thoroughly test the 
functionality of most such BIOSs because they are not 
standardized.  So the end result is that you may gain some 
memory (highly unlikely), but at a loss of stability and 
functionality.

Cloaking leaves such BIOSs alone purposefully.  We could 
attempt to Cloak them in a manner similar to that which we use 
for the Video BIOS, but we chose not to.  Our philosophy is one 
of caution -- unless such BIOSs can be tested thoroughly when 
they are relocated they should not be.

In conclusion:

Cloaking provides more memory

Cloaking can provide 64K more than is possible with STEALTH :M 
and 96K more than STEALTH :F.  Even more if you make use of our 
other Cloaked utilities instead of their DOS equivalent.  For 
instance the Cloaked Disk Cache can save you over 80K if you 
use it instead of PC-Kwik or SmartDrive.

Cloaking is faster and more reliable

You wont see ANY performance drop.  In fact youll be able to 
realize the advantages of having your BIOS take advantage of 
the full 32 bit mode.  And get a free BIOS upgrade at the same 
time.

Cloaking is an open API

We are completely open about what Cloaking is and how it works, 
and provide the facility for other vendors to support Cloaking.

But why dont you be the judge of that, after all we have a 60 
day unconditional return policy if you buy NETROOM directly 
from us.

   ****  Copyright (c) 1993 by Helix Software Company  ****
