Category : Alternate Operating Systems - Quarterdeck DesqView, CP/M, etc
Archive   : QWHITE13.ZIP
Filename : EX13FLOW.TEC

 
Output of file : EX13FLOW.TEC contained in archive : QWHITE13.ZIP

ID:EF Exception #13 Advanced Troubleshooting
Quarterdeck Technical Note #232 Filename: EX13FLOW.TEC
by David Riess CompuServe: EX13FL.ZIP
Last revised: 6/15/92 Category: QEMM

Subject: A step-by-step, flowchart-like procedure for determining the solution
to problems that result in QEMM-386's Exception #12 or Exception #13
reports. See also EXCEPT13.TEC.


YES, this document IS long! PLEASE, Do not be intimidated by the
length of this document as you will only need a small part of its contents.
---------------------------------------------------------------------------
Exception errors are unusual or invalid conditions associated with the
execution of a particular instruction by the 80386 processor (or higher, such
as the 80486 processor). The 80386 recognizes 16 different classes of
exceptions. Quarterdeck's expanded memory manager, QEMM-386, has been
designed to capture these 80386 exception errors and display them directly to
the user. This is a basic feature of all 386 memory managers; MS-DOS and PC-
DOS alone do not have this capability.
Exception #13 is the "General Protection Fault" error; usually, your
machine has crashed as a result of whatever caused it. Any privileged
instruction or an instruction that references memory at an invalid address can
trigger an Exception #13. It is the most commonly encountered 80386 error.

There are two circumstances that can cause an Exception #13 to occur:

In the first case, the Exception #13 indicates that a program has
violated the protected mode of the 80386 by executing a privileged
instruction or I/O reference.
The second case (most common to QEMM-386 users) involves
instructions that reference memory addresses and may indicate that an
application has a bug, or that adverse circumstances have sent the
processor out of control: it has overwritten its memory partition, and
may in fact be running wild, executing meaningless code.

Many people assume that QEMM-386 is causing the Exception #13 error to
occur on their machine. However, the majority of these errors are due to the
complex combination of multiple TSRs, device drivers and program(s) currently
in memory trying to run in harmony with the expanded memory manager, the
version of DOS, the video card, hard-disk drive,...
QEMM-386 will attempt to report the error before your system crashes,
although it is often an error unrelated to the functioning of the memory
manager. An Exception #13 does not neccesarily mean that QEMM-386 is at
fault, but the QEMM WILL report the error.

---------------------------------------------------------------------------
This Quarterdeck Technical Note (technote) has been written to help YOU
troubleshoot and fix most Exception #13 problems. We have included an example
scenario for YOU to follow in order to make this Technote as "User Friendly"
as possible.
At a minimum, this Exception #13 troubleshooting procedure will take 2
steps to complete and you will have to skip ahead to different parts of this
Technote depending on the results of previous steps, so PLEASE FOLLOW ALL
INSTRUCTIONS CAREFULLY.

The Quarterdeck Technical Support Staff handle many Exception #13 calls
every day ranging from the simple (e.g., "Every time I load my CD-ROM, when I
access the disk I get an 'QEMM: Exception #13 error at C800:3D5F'") to the
difficult (e.g., "I'm running my database program off the network and the
program works fine, but when I exit the database program and go into my
spreadsheet program, if I print from the spreadsheet program, I get an
Exception #13 error. This happens randomly, usually once every 3 days.")

This Technote follows the same EXACT procedures which our technical support
staff uses to troubleshoot Exception #13 problems with QEMM-386.

EXAMPLE Exception #13 PROBLEM SCENARIO: "I've installed QEMM-386 and
have run the OPTIMIZE program to load my TSRs and device drivers into High
RAM. I'm running a scanner program from my network drive (drive F:). I get
into the scanner program without a problem, except every time when I start
scanning I get an 'Exception #13' error and my system crashes."

SCENARIO ASSUMPTIONS: QEMM-386 has been loaded onto the local C: drive
and QEMM-386 is installed in the C:\QEMM subdirectory.

INSTRUCTIONS: Some of the following steps will have you either edit a
file or run a program from the DOS prompt. Whenever you see a number followed
by a right parenthesis, ) , perform the action which follows. Comments
regarding the action will be followed in brackets, [].

(STEP 1)

TRY TO RE-CREATE THE PROBLEM WITHOUT QEMM-386 INSTALLED
-------------------------------------------------------
QEMM-386 will report an Exception #13 error message whether QEMM-386 is
responsible for the problem or not! We will need to reboot your system
WITHOUT QEMM-386 and try to re-create the problem to determine if QEMM-386 is
involved with the Exception #13 error.
If QEMM-386 is NOT loaded on your system and the software STILL has
problems, then QEMM-386 is not involved with the error and you will need to
consult the documentation or contact the makers of the software that is making
your system crash.

??? Does your program need expanded memory in order to operate properly?
If so, please go to STEP 2 (otherwise proceed with this STEP).
Proceed with this step if you are uncertain if your program uses
expanded memory.

We will need to re-boot your computer without QEMM-386 loaded. To
accomplish this, we DO NOT have to modify any of your startup files
(CONFIG.SYS or AUTOEXEC.BAT files)!

1) Please re-boot your machine. During the re-boot, your computer will
BEEP. When you hear the BEEP, immediately hold down on the ALT key (and keep
it pressed down) until you see the following message on screen:

QEMM386: Press to unload QEMM or any other key
to continue with QEMM...

If you do not see this message, please retry again by rebooting your machine!
Press the ESCAPE (ESC) key to bypass QEMM and try to re-create the Exception
#13 problem.

??? If you do not have enough memory to run your program, go to STEP 2.

??? If the problem still exists, go to STEP B.

??? If the problem goes away, go to STEP 2.

(STEP 2)

QUICK-FIX TROUBLESHOOTING PARAMETERS FOR QEMM-386
-------------------------------------------------
This second step is intended for the advanced QEMM-386 user who is
familiar and comfortable with editing and adding parameters to the QEMM386.SYS
line of the CONFIG.SYS file. If you are not familiar with this process, DON'T
WORRY! Skip ahead to STEP 3 now, where you will be given examples about how
to edit and add parameters to QEMM.
If the following 2 scenarios do not apply to your Exception #13 problem
or do not help RESOLVE the problem, then please go to STEP 3 (the next step)
and remove the parameters specified below (depending on the scenario).
Scenario #1: When your machine crashes, do you notice that the video
text or graphics is altered (blank screen, part of the screen is altered,
strange lines displayed across the screen, color changes, video-mode switching
problems)? Add the following parameters to the end of the QEMM386.SYS line of
the CONFIG.SYS file:

X=A000-C7FF NV NVR

Scenario #2: When your machine crashes, do you notice that the hard disk
(or floppy disk or CD-ROM) is being accessed? Add the following parameters to
the end of the QEMM386.SYS line of the CONFIG.SYS file:

X=F000-FFFF X=C800-CFFF DB=4 ROM

(IF you already had the ROM parameter at the end of the QEMM386.SYS line, then
DO NOT USE (remove) the ROM parameter from the QEMM386.SYS line.) If the
scenario #2 parameters help resolve your problem, try removing the X=C800-CFFF
parameter (however keep the other 3 parameters) . If the problem now occurs,
then put back the X=C800-CFFF parameter.

If the above parameters resolve your problem, HAVE A GREAT DAY!

(STEP 3)

DETERMINING THE FREQUENCY OF THE PROBLEM
----------------------------------------
Troubleshooting Exception #13 errors can be quite difficult if the
problem occurs infrequently, every once in a couple of days/weeks without
showing some kind of pattern that may be causing the problem. In order to
troubleshoot ANY problem, you must be able to know how to reproduce the
problem on a frequent basis, and if you can't reproduce the error frequently,
then this technote will not be able to help you because:

It's difficult to fix something, if you don't know that it's fixed when
you fix it.

If the Exception #13 error occurs every time you run a particular
application or you have been experiencing Exception #13 errors at least twice-
a-day with a given application, then we can attempt to troubleshoot the
problem systematically.
If the problem occurs frequently, please go to STEP 4.
If the problem is not frequent, you must try to determine a pattern by
which you can re-create the error on a frequent basis and then proceed with
this technote! (If your car makes unusual noises every once in a while, you
can't expect your automobile mechanic to fix the problem if he can't re-create
the problem!)
PLEASE NOTE: Crashes which occur infrequently are usually hardware
related problems. These random crashes cannot be resolved by reconfiguring or
removing QEMM-386.

(STEP 4)

DETERMINING YOUR QEMM-386 VERSION
---------------------------------
This step determines which version of QEMM-386 you have, and will direct
you to the troubleshooting technique needed for solving your Exception #13
problem based on your QEMM version. Enter the following 3 commands at the DOS
prompt:

1) C: [go to the QEMM disk-drive ]
2) CD\QEMM [go to the QEMM subdirectory ]
3) QEMMREG [Determine what QEMM version you have]

Here's an EXAMPLE of what you should see on your screen:

Quarterdeck Expanded Memory Manager 386 V5.13 <----------|
Copyright (c) 1986-1991 by Quarterdeck Office Systems |
Serial number: 000-B6-0000-000000 |
Registered to: Power User |
ABC COMPUTER USERS |
Anywhere, CA USA |
|
??? What version of QEMM is installed on your machine: ----------|

4.00 - 5.13
---------------
go to STEP 6.

6.00 or greater
---------------
go to STEP 5.

***
If QEMMREG returns "Bad command or file name", then either you have a
very old version of QEMM-386 (in which you should go to STEP 6) or you have
erased the file QEMMREG.COM from your QEMM directory (in which case you should
re-install QEMM-386 on your hard disk, then perform STEP 4 again).
***

(STEP 5)

DETERMINING WHETHER STEALTH IS CAUSING A CONFLICT WITH YOUR SYSTEM
------------------------------------------------------------------
You have QEMM version 6.00 or greater. Quarterdeck has added the STEALTH
feature into your version of QEMM in order to create up to 83K more of High
RAM (up to 115K more on PS/2 machines) than versions before 6.00! The Stealth
feature is invoked with the parameter ST:M or ST:F on the
"DEVICE=C:\QEMM\QEMM386.SYS ..." line of your CONFIG.SYS file (located in the
root directory of your bootup drive).
Your Exception #13 problem may be related to the Stealth feature of QEMM,
provided you have invoked Stealth. We will check your CONFIG.SYS file for the
ST:x parameter to determine the next troubleshooting STEP for you to take.
With a file editor or file viewer, go to the C:\ directory (root
directory of your bootup drive) and load the CONFIG.SYS file. Search the
DEVICE=C:\QEMM\QEMM386.SYS line for either ST:M or ST:F.

??? If the QEMM386.SYS line DOES NOT have a ST:M or ST:F parameter (which
means you are not using the Stealth feature of QEMM-386), then go to STEP
6.

We want to remove all Stealth-related parameters (ST:M, ST:F, XST=,
XSTI=, DBF=, FSTC, FRAME=) to test whether Stealth is involved with your
Exception #13 problem. Here's an example of removing these parameters:

DEVICE=C:\QEMM\QEMM386.SYS R:1 RAM ROM X=D000-D3FF ST:M XST=C000
<---delete-->
DEVICE=C:\QEMM\QEMM386.SYS R:1 RAM ROM X=D000-D3FF

Edit your CONFIG.SYS file and remove the Stealth-related parameter(s),
then re-boot your computer and try to re-create the Exception #13 error.

??? If the problem still exists, please go to STEP 6.

??? If the problem goes away, then your Exception #13 error is due to a
conflict with QEMM's Stealth feature. NOW, the next step for YOU is to
leave this technical note and get the technote STEALTH.TEC, which covers
how to correct problems which only occur with Stealth. You no longer need
this technote!

The STEALTH.TEC technote is available:

1) On Compuserve [GO QUARTERDECK, Library 2]. Download STEALT.ZIP.
2) On the Quarterdeck BBS [310-314-3227]. Download STEALTH.TEC.
3) On the Quarterdeck Q/FAX [310-314-3214]. Download FAX# 205 (Q/FAX
will automatically fax this back to your fax machine instantly!).
4) Call Quarterdeck Technical Support [310-392-9701] and we will
gladly fax/mail it to you.

(STEP 6)

DETERMINING THE MEMORY LOCATION OF THE EXCEPTION #13 ERROR
----------------------------------------------------------
The location of the memory address where the Exception #13 error occurred
may give us a clue as to what may be causing the problem. We will locate the
memory address of the error and perform the next STEP based on this address.
The following is an example Exception #13 error message:

QEMM: Exception #13 at C9F6:0173. <---------------------
Error code: 0000 |
AX=240A BX=0000 CX=0000 DX=0000 SI=0000 DI=0000 BP=0001 |
DS=29F6 ES=29F6 SS=29F6 SP=D4F9 Flags=7202 |
Instruction: 6F 72 20 72 65 61 64 69 6E 67 20 2E 53 59 4D |
Do you want to (T)erminate the program, (R)eboot, |
or disable QEMM and try to (C)ontinue? |
|
We are only concerned with the first line, ------------------------
to determine the address where your system crashed!

The end of the line shows the memory address of the crash at XXXX:YYYY
(in our example C9F6:0173) where XXXX and YYYY are hexadecimal
(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) numbers. We are only concerned with the
XXXX number (in our example C9F6).

??? If the Hexadecimal number of XXXX is in the range from:

0000 through 9999 (e.g. 29F6, 512E, 9FE0, 0C6A) go to STEP 8.
A000 through FFFE (e.g. A890, B1EF, D800, EFFE) go to STEP 7.
FFFF go to STEP 8.

(STEP 7)

AVOIDING HIGH RAM CONFLICTS
---------------------------
Exception #13 errors that occur in the range from A000 up to FFFE are
located in the High RAM area (above 640K) and are usually caused by one of two
situations:

The first situation occurs if you have a bus-mastering device
(usually SCSI devices and CD-ROM's) which conflicts with High RAM. Some of
these devices have a special (VDS) driver supplied by the company that
allows the device to avoid these problems (without having to modify your
QEMM-386 settings to correct the problem!).

The second situation is caused by a conflict between QEMM-386 and an
adapter ROM (or RAM) which is situated in the same memory location. For
example: If you have a network card that takes up 16K of memory and QEMM-
386 fails to detect the existence of your network card, then QEMM-386
will create High RAM in the SAME memory location as your network card.
If your software then tries to access the network card, the network
ROM/RAM code will not be found (instead, your software will try to
execute the contents of the High Ram area, which may have another program
loaded High in that area) and usually your machine will crash.

We will add the following 2 parameters to the end of the QEMM386.SYS line
of your CONFIG.SYS file to help BOTH possible situations:

The first parameter is 'DB=4' to avoid bus-mastering problems.

The second parameter is either:

'X=A000-AFFF' if the error occurs in the range of A000-AFFF or
'X=B000-BFFF' if the error occurs in the range of B000-BFFF or
'X=C000-CFFF' if the error occurs in the range of C000-CFFF or
'X=D000-DFFF' if the error occurs in the range of D000-DFFF or
'X=E000-EFFF' if the error occurs in the range of E000-EFFF or
'X=F000-FFFF' if the error occurs in the range of F000-FFFF

Here is an EXAMPLE of what your QEMM line in the CONFIG.SYS file looks
like:

DEVICE=C:\QEMM\QEMM386.SYS RAM AROM=C800-CBFF

If we use the EXAMPLE Exception #13 memory address from the last STEP,
(at C9F6), then adding the 2 parameters will make the QEMM line look like:

DEVICE=C:\QEMM\QEMM386.SYS RAM AROM=C800-CBFF DB=4 X=C000-CFFF

Save the CONFIG.SYS file.
Now reboot your machine and try to re-create the Exception #13 problem.

??? If the problem still exists, go to STEP 8.

??? If the problem goes away, then we know there was a memory conflict and we
should try to narrow down which address range in High RAM has been causing
the conflict. This will allow you to get back as much High RAM as
possible! Try removing the DB=4 parameter from the QEMM386.SYS line. If
your machine crashes, then obviously you need this parameter. If your
machine crashes, you may wish to inquire about a VDS driver which is
provided by the manufacturers of such boards. For a detailed description
of VDS drivers and bus-mastering devices, you may want to obtain the BUS-
MAST.TEC technote. The BUS-MAST.TEC technote is available:

1) On Compuserve [GO QUARTERDECK, Library 2]. Download BUSMAS.ZIP.
2) On the Quarterdeck BBS [310-314-3227]. Download BUS-MAST.TEC.
3) On the Quarterdeck Q/FAX [310-314-3214]. Download FAX# 121 (Q/FAX will
automatically fax this back to your fax machine instantly!).
4) Call Quarterdeck Technical Support [310-392-9701] and we will gladly
fax/mail it to you.

Try removing the X=C000-CFFF parameter (remember, the 'C' is an example!
You may be using 'A','B','D','E', or 'F' instead) from the QEMM386.SYS line.
If your machine crashes, then obviously you need this parameter.
If you DO need X=C000-CFFF (excluding a 64K area), then we should try to
narrow down the exclusion area in order to create more High RAM.
The most accurate way to determine which area(s) should be eXcluded is to
run QEMM's Analysis procedure which is described in detail in your QEMM-386
manual (in the "The QEMM.COM program" section, look for the page header
"Analysis Procedure"). This method will have you strip all parameters off the
QEMM386.SYS line of your CONFIG.SYS file except for "ON MAPS=0". After re-
booting and running the program that has been giving you trouble, you will run
"QEMM ANALYSIS" at the DOS prompt to determine the exact area(s) you must
exclude. HAVE A GREAT DAY!
For a detailed description of the ANALYSIS procedure, you may want to
obtain the EXCLUDE.TEC technote. The EXCLUDE.TEC technote is available:

1) On Compuserve [GO QUARTERDECK, Library 2]. Download EXCLUD.ZIP.
2) On the Quarterdeck BBS [310-314-3227]. Download EXCLUDE.TEC.
3) On the Quarterdeck Q/FAX [310-314-3214]. Download FAX# 219 (Q/FAX
will automatically fax this back to your fax machine instantly!).
4) Call Quarterdeck Technical Support [310-392-9701] and we will
gladly fax/mail it to you.

***** If you do not have access to your QEMM-386 manual or EXCLUDE.TEC (and
cannot follow QEMM's Analysis procedure) then try the following 2 parameters,
one-at-a-time, instead of X=C000-CFFF on the QEMM386.SYS line:

X=C000-C7FF
X=C800-CFFF

If one of these parameters work properly, then you will want to use that
parameter (instead of X=C000-CFFF). If both of these parameters still cause a
crash, then just use X=C000-CFFF. HAVE A GREAT DAY!

(STEP 8)

CREATE A CLEAN ENVIRONMENT FOR QEMM
-----------------------------------
To determine whether the problem is caused by QEMM-386, we must create a
clean environment for QEMM-386 that requires removing ALL lines from the
CONFIG.SYS and AUTOEXEC.BAT files which do not directly affect the program
that is getting the Exception #13 error.
First, you need to make back-up copies of your CONFIG.SYS and
AUTOEXEC.BAT files (which are located in the root directory) because we are
going to modify these files. To make the back-up copies of these files
perform the following 4 commands at the DOS prompt:

1) C:
2) CD\
3) COPY CONFIG.SYS CONFIG.OLD
4) COPY AUTOEXEC.BAT AUTOEXEC.OLD

Now, edit your CONFIG.SYS file so that only the lines that are ABSOLUTELY
necessary to re-create the Exception #13 error remain in the CONFIG.SYS file.
You need the QEMM386.SYS line and the FILES= line as a minimum, delete every
other line unless it is ABSOLUTELY needed to re-create the problem.

The following is an example CONFIG.SYS file for our example:

#1 DEVICE=C:\QEMM\QEMM386.SYS RAM AROM=C800-CBFF
2 DEVICE=C:\UTIL\CACHE.SYS
#3 FILES=25
4 BUFFERS=30
#5 DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\SCAN\SCANNER.SYS 256
6 DEVICE=C:\DOS\ANSI.SYS
7 DEVICE=C:\FAXING\FAX.SYS
#8 SHELL=C:\COMMAND.COM /P /E:768
#9 DEVICE=C:\QEMM\LOADHI.SYS /R:3 C:\NETW\NETWORK.SYS
10 STACKS=0,0

The # indicates lines which are ABSOLUTELY necessary to include in the
CONFIG.SYS file in order to re-create the example problem. Let's take a look
at why (you may want to look at the Exception #13 example problem scenario
located on the first page of this Technote, again!):

line 1) We NEED the QEMM driver to re-create the problem.
line 2) A disk cache IS NOT necessary to re-create the problem.
line 3) We NEED to include the FILES= statement.
line 4) The BUFFERS statement IS NOT needed.
line 5) The scanner IS part of our problem.
line 6) ANSI.SYS IS NOT needed to re-create the problem.
line 7) The fax board has NOTHING to do with the problem.
line 8) The SHELL= statement tells DOS where the command processor is.
line 9) We NEED to log on to the network to run the scanner program.
line 10) The Stacks statement IS NOT necessary.

(if you are not sure if a line is absolutely necessary in your CONFIG.SYS or
AUTOEXEC.BAT files, you might try deleting it!)
This leaves our CONFIG.SYS with:

DEVICE=C:\QEMM\QEMM386.SYS RAM AROM=C800-CBFF
FILES=25
DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\SCAN\SCANNER.SYS 256
SHELL=C:\COMMAND.COM /P /E:768
DEVICE=C:\QEMM\LOADHI.SYS /R:3 C:\NETW\NETWORK.SYS

Now, since the OPTIMIZE program was executed, some of the device drivers
have been loaded high, and we have to make sure these drivers are loaded low.
This is because some device drivers behave incorrectly when loaded high, which
the LOADHI program is not able to detect in advance!

DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\SCAN\SCANNER.SYS 256
<------delete--------->
DEVICE=C:\SCAN\SCANNER.SYS 256

This leaves our CONFIG.SYS with:

DEVICE=C:\QEMM\QEMM386.SYS RAM AROM=C800-CBFF
FILES=25
DEVICE=C:\SCAN\SCANNER.SYS 256
SHELL=C:\COMMAND.COM /P /E:768
DEVICE=C:\NETW\NETWORK.SYS

and boost the FILES= to at least 40.

The final CONFIG.SYS looks like:

DEVICE=C:\QEMM\QEMM386.SYS RAM AROM=C800-CBFF
FILES=40
DEVICE=C:\SCAN\SCANNER.SYS 256
SHELL=C:\COMMAND.COM /P /E:768
DEVICE=C:\NETW\NETWORK.SYS

(Your CONFIG.SYS may only need the QEMM386.SYS and FILES=40 line. Don't
worry if your CONFIG.SYS isn't 5 lines long.)
Save the CONFIG.SYS and let's modify your AUTOEXEC.BAT file. The only
lines which we need to keep are the PROMPT and PATH statements.
The following is an example AUTOEXEC.BAT file for our example:

1 ECHO OFF
#2 PATH C:\;C:\DOS;C:\UTILS;C:\EDITOR;F:\SCANNER;
3 C:\QEMM\LOADHI C:\UTIL\FASTKEYB
#4 PROMPT $P$G
#5 C:\QEMM\LOADHI /R:1 C:\NETW\LOGIN
6 SET TEMP=F:\WINDOWS\TEMP
7 FAXSETUP 125

The # indicates lines which are absolutely necessary to re-create the
problem. Here's why:

Line 1) The ECHO statement IS NOT necessary.
Line 2) We NEED the PATH statement.
Line 3) Keyboard accelerator IS NOT needed.
Line 4) Prompt statement is for your convenience.
Line 5) We NEED to access the network.
Line 6) This SET statement IS NOT necessary.
Line 7) The FAX board has NOTHING to do with our problem.

This leaves our AUTOEXEC.BAT as:

PATH C:\;C:\DOS;C:\UTILS;C:\EDITOR;F:\SCANNER;
PROMPT $P$G
C:\QEMM\LOADHI /R:1 C:\NETW\LOGIN

Now, since we have run the OPTIMIZE program, some of our device drivers
have been loaded high and we have to make sure these drivers are loaded low.
All we have to do is remove the LOADHI from these lines.

C:\QEMM\LOADHI /R:1 C:\NETW\LOGIN
<----delete------->

C:\NETW\LOGIN

This leaves our final AUTOEXEC.BAT with:

PATH C:\;C:\DOS;C:\UTILS;C:\EDITOR;F:\SCANNER;
PROMPT $P$G
C:\NETW\LOGIN

(Your AUTOEXEC.BAT may only need the PATH and PROMPT lines. Don't worry
that your AUTOEXEC.BAT isn't 3 or more lines long)
Save the AUTOEXEC.BAT file.
Now reboot your machine and try to re-create the Exception #13 problem.

??? If the problem still exists, go to STEP 9.

??? If the problem goes away, go to STEP C.

(STEP 9)

MODIFY THE QEMM386.SYS LINE
---------------------------
By modifying the CONFIG.SYS and AUTOEXEC.BAT files in STEP 8, we have
shown that the problem is caused by either QEMM-386, your program, or a driver
needed to run your program. Now we will modify your QEMM386.SYS line in the
CONFIG.SYS file by adding parameters (and possibly removing some of the
parameters that are already on the line) to avoid POSSIBLE conflicts involving
QEMM-386.

Modify the QEMM386.SYS line of your CONFIG.SYS file to look EXACTLY as
follows:

DEVICE=C:\QEMM\QEMM386.SYS X=A000-C7FF X=F000-FFFF NO NS NT NCF NOSH DB=4

Be sure that you DO NOT add the 'RAM' parameter to this line!

??? If you have a version of QEMM greater than 6.00 and are using the
Stealth parameter (ST:M or ST:F), please DO NOT include the Stealth
parameter at this time. BUT make a mental note of it, as you will add
this parameter back to the QEMM386.SYS line in STEP 15. ALSO, you will
want to remove any Stealth-related parameters at this time (you may not
have any of these): XST= , XSTI=, DBF=, FSTC, FRAME=.

If your QEMM386.SYS line previously contained a parameter to EXCLUDE an
area of memory such as EXCLUDE= or X= or AROM= or ARAM=, then you should also
add this parameter to the end of the QEMM386.SYS line. DO NOT add any
INCLUDE= or I= parameters, even if you previously had any! In our example, we
previously had the AROM=C800-CBFF parameter. Adding this parameter to the
above DEVICE line will look like:

DEVICE=C:\QEMM\QEMM386.SYS X=A000-C7FF X=F000-FFFF NO NS NT NCF NOSH DB=4
AROM=C800-CBFF
^
(Please note that the "AROM=" parameter is NOT on the next line,
but is on the same line immediately after "DB=4". Many editors
will allow wrap-around of the same line)

Save the CONFIG.SYS file.
Now reboot your machine and try to re-create the Exception #13 problem.

??? If the problem still exists, go to STEP 10.

??? If the problem goes away, go to STEP 13.

(STEP 10)


TRY TO RE-CREATE THE PROBLEM WITHOUT QEMM-386 INSTALLED
-------------------------------------------------------
By adding/stripping parameters from the QEMM386.SYS line of your
CONFIG.SYS file, we have eliminated many of the possible conflicts which QEMM-
386 may have with your system.
To determine whether QEMM-386 is solely responsible for your problems, we
will need to run your software without QEMM-386 loaded. If your program uses
expanded memory, then another memory manager (such as DOS 5 or Windows EMM386
driver) MUST be loaded in place of QEMM-386 in order to test whether your
program doesn't work with QEMM-386 vs. any other expanded memory manager.

??? Does your program need expanded memory in order to operate properly? If
so, please go to STEP 11 (otherwise proceed with this STEP).

We will need to re-boot your computer without QEMM-386 loaded. To
accomplish this, we DO NOT have to remove the QEMM386.SYS line from the
CONFIG.SYS file!

Please re-boot your machine. During the re-boot, your computer will
BEEP. When you hear the BEEP, immediately hold down on the ALT key (and keep
it pressed down) until you see the following message on screen:

QEMM386: Press to unload QEMM or any other key
to continue with QEMM...

If you do not see this message, please retry again by rebooting your
machine!

Press the ESCAPE (ESC) key to bypass QEMM and try to re-create the
Exception #13 problem.

??? If the problem still exists, go to STEP B.

??? If the problem goes away, go to STEP A.

(STEP 11)

USE ANOTHER EXPANDED MEMORY MANAGER INSTEAD OF QEMM-386
-------------------------------------------------------
The problem that you're having may be caused by QEMM or any other
expanded memory manager that is loaded. If your program or device driver uses
expanded memory, then we must test whether the problem is due solely to QEMM
by testing another expanded memory manager. If your system has problems with
another expanded memory manager loaded, then your program has a problem with
any expanded memory manager and QEMM is not to blame for the crashes you have
been experiencing. If this is the case, you should contact the developers of
that program for information on options or special setup considerations for
use with expanded memory managers.
You are probably running with DOS 4 or DOS 5 which comes with an expanded
memory manager. DOS 4 comes with HIMEM.SYS and EMM386.SYS and DOS 5 comes
with HIMEM.SYS and EMM386.EXE (probably on your hard disk right now!). We
will now modify your CONFIG.SYS to use these drivers instead of QEMM and try
to re-create the problem. First, make a back-up copy of the "clean
environment" version of CONFIG.SYS file by entering the following 3 commands
at the DOS prompt:

1) C:
2) CD\
3) COPY CONFIG.SYS CONFIG.Q

We will attempt to re-create the problem by using the other drivers,
HIMEM.SYS and EMM386.SYS (EMM386.EXE if you are using DOS 5.0), which when
loaded together are similar to the Extended and Expanded memory features of
QEMM.

First, you must find where these files are located on your hard-disk
(They are most likely found in the C:\DOS, C:\, directories). Now, edit the
CONFIG.SYS and replace these two drivers for the QEMM386.SYS driver (ASSUME
that HIMEM.SYS is in the root directory and EMM386.SYS is in the DOS
directory):

DEVICE=C:\HIMEM.SYS
DEVICE=C:\DOS\EMM386.SYS ON 4096 (use EMM386.EXE if you have DOS 5)
FILES=40
DEVICE=C:\SCAN\SCANNER.SYS 256
SHELL=C:\COMMAND.COM /P /E:768
DEVICE=C:\NETW\NETWORK.SYS

Save the CONFIG.SYS, reboot, and try to re-create Exception #13 problem.

??? If the problem still exists, then go to STEP B.

??? If the problem goes away, go to STEP 12.

(STEP 12)
---------

CONFIGURE QEMM-386 SIMILARLY TO THE OTHER DRIVERS
-----------------------------------------------------
We want to find out what the other drivers are doing to make your
program work properly so that we can configure QEMM-386 to emulate the
other drivers. We must use the MANIFEST program to view what the
other drivers are doing.

1) Reboot your computer to get to the DOS prompt
2) C:\QEMM\MFT.EXE [type this at the DOS prompt to start MANIFEST]

Hit the DOWN-ARROW key once (this will give you the First Meg/Overview
screen). The box in the center of the screen will look as follows:
You will see a screen similar to this:

Memory Area Size Description
0000 - 003F 1K Interrupt Area
0040 - 004F 0.3K BIOS Data Area
0050 - 006F 0.5K System Data
0070 - 0FB0 61K DOS
0FB1 - 21F8 73K Program Area
21F9 - 9FFF 504K [Available]
Conventional memory ends at 640K
A000 - AFFF 64K VGA Graphics
B000 - B7FF 32K Unused
B800 - BFFF 32K VGA Text
C000 - C7FF 32K Video ROM
C800 - CFFF 32K Unused
D000 - DFFF 64K Page Frame <----------------------------|
E000 - EFFF 64K Unused |
F000 - FFFF 64K System ROM |
|
|
Look for the Page Frame, we must use the QEMM parameter FRAME= ---|
to emulate where the Page Frame is located when using the other
drivers. (Notice that the Page Frame above starts at D000.)
Hit the ESCAPE key twice to exit MANIFEST and perform the following four
commands at the DOS prompt:

1) C:
2) CD\
3) RENAME CONFIG.SYS CONFIG.M
[Save the CONFIG.SYS w/other drivers]
4) COPY CONFIG.Q CONFIG.SYS
[Bring back the STEP-7 CONFIG.SYS ]
Add the following parameters to the end of the QEMM386.SYS line of your
CONFIG.SYS file:

NV NVR NTR LD NX NR NRH NOVDS FRAME=XXXX
^^^^
(XXXX is the starting memory area of
the Page Frame when using the other drivers on your machine. In this
EXAMPLE, FRAME=D000)
The QEMM386.SYS line for this EXAMPLE now looks like:

DEVICE=C:\QEMM\QEMM386.SYS X=A000-C7FF X=F000-FFFF NO NS NT NCF NOSH
AROM=C800-CBFF NV NVR NTR LD NX NR NRH NOVDS FRAME=D000

Reboot and try to re-create the Exception #13 problem.

??? If the problem still exists , then go to STEP A.

??? If the problem goes away, then go to STEP 13.

(STEP 13)

CREATING HIGH RAM FOR QEMM-386
------------------------------
We have properly configured QEMM-386 without High RAM to work with your
program. We must add the RAM parameter to end of the QEMM386.SYS line in your
CONFIG.SYS to create High RAM. Edit your CONFIG.SYS file and add RAM to the
end of the QEMM386.SYS line (DEVICE=C:\QEMM\QEMM386.SYS ... RAM).
Reboot your machine and try to re-create the Exception #13 problem.

??? If the problem re-occurs, then go to STEP 14.

??? If the problem does not occur, then proceed below:

In STEP 9, we added the following parameters to the QEMM386.SYS line:
X=A000-C7FF X=F000-FFFF NO NS NT NCF NOSH DB=4. We will attempt to recover
some/all of the HIGH Ram which we eXcluded. Edit the
DEVICE=C:\QEMM\QEMM386.SYS... line of the CONFIG.SYS file and delete (ONE
parameter AT A TIME) the following 3 parameters: X=A000-C7FF, X=F000-FFFF,
NCF. If removing the X=A000-C7FF parameter does not cause the problem to re-
occur, then you DON'T need this parameter. However if the problem does recur,
then the parameter needs to be kept. Try this for the other 2 parameters!

??? If the problem still doesn't occur and you WERE using the Stealth feature
(ST:M or ST:F) from QEMM version 6.00 or greater, then go to STEP 15.

??? If the problem still doesn't occur and you WERE NOT using the Stealth
feature (ST:M or ST:F) from QEMM version 6.00 or greater, then go to STEP
C.

(STEP 14)

ELIMINATING HIGH RAM CONFLICTS
------------------------------
It appears that there is a conflict between one of your adapters and QEMM-
386. QEMM-386 is not recognizing that your adapter is there and QEMM is
mapping memory on top of the adapter memory. We must exclude all High RAM
areas to test this hypothesis and if indeed this is the case, we will
systematically narrow down what area really needs to be excluded!

1) C:\QEMM\MFT [type this at the DOS prompt to start MANIFEST]

Hit the DOWN-ARROW key once (this will give you the First Meg/Overview
screen). The box in the center of the screen will look as follows:

You will see a screen similar to this:

Memory Area Size Description
0000 - 003F 1K Interrupt Area
0040 - 004F 0.3K BIOS Data Area
0050 - 006F 0.5K System Data
0070 - 0FB0 61K DOS
0FB1 - 21F8 73K Program Area
21F9 - 9FFF 504K [Available]
Conventional memory ends at 640K
A000 - AFFF 64K VGA Graphics
B000 - B7FF 32K Unused
B800 - BFFF 32K VGA Text
C000 - C7FF 32K Video ROM
C800 - CFFF 32K High RAM <------------|
D000 - DFFF 64K Page Frame |
E000 - EFFF 64K High RAM <------------|
F000 - FFFF 64K System ROM |
|
We want to eXclude all High RAM areas! -------|

We do this by using the EXCLUDE= (X= for short) parameter to QEMM-386.
For this example, we have two High RAM areas to exclude: from C800-CFFF and
E000-EFFF. The corresponding parameters to ADD to end of the QEMM386.SYS line
in the CONFIG.SYS file would be:

X=C800-CFFF X=E000-EFFF

Add as many X= parameters as needed to your CONFIG.SYS to exclude as many
High RAM areas that your machine has.
Reboot your machine and try to re-create the Exception #13 problem.

??? If the problem occurs, then go to STEP A.

??? If the problem goes away, then we know there was a memory conflict and we
should now try to narrow down which address range in High RAM has been
causing the conflict. This will allow you to get back as much High RAM as
possible! Often when there is a conflict in memory, there is a 16K area
that needs to be excluded and we should now narrow down the eXclusion of
High RAM areas in question. EXAMPLE: We have excluded C800-CFFF which is
a 32K area and E000-EFFF which is a 64K area. These numbers are in
hexadecimal (base 16) and may confuse you! (You can access a technnote on
hexadecimal numbers by calling our Q/FAX line, (310)-314-3214 to download
technote number 190 to your own fax machine.) These 2 areas use 6
different 16K areas: C800-CBFF, CC00-CFFF, E000-E3FF, E400-E7FF, E800-
EBFF, EC00-EFFF. To narrow down the area, we would use the X= parameter,
trying all six combinations, one at a time! More than likely, five out of
the six combinations will cause the problem to occur, but one out of the
six will resolve the problem.

??? When you have determined which area needed to be excluded, and you
WERE using the Stealth feature (ST:M or ST:F) from QEMM version 6.00
or greater, then go to STEP 15.

??? When you have determined which area needed to be excluded, and you
WERE NOT using the Stealth feature (ST:M or ST:F) from QEMM version
6.00 or greater, then go to STEP C.

(STEP 15)

ADDING THE STEALTH PARAMETER BACK
---------------------------------
We have properly configured QEMM-386 with High RAM to work with your
program. We must now add the Stealth (and any Stealth-related) parameter to
the end of the QEMM386.SYS line in your CONFIG.SYS to enable Stealth. Edit
your CONFIG.SYS file and add ST:M or ST:F (and any Stealth-related parameter
that was ORIGINALLY on your QEMM386.SYS line) to the end of the QEMM386.SYS
line:

DEVICE=C:\QEMM\QEMM386.SYS ... RAM ST:x [possibly other Stealth parameters].

Reboot your machine and try to re-create the crash.

??? If the problem still doesn't occur, then go to STEP C.

??? If the problem does re-occur, then your Exception #13 problem is due to
a conflict with QEMM's Stealth feature. NOW, the next step FOR YOU is
to leave this technote (for now) and get the technote STEALTH.TEC to
resolve the Stealth conflict.

The STEALTH.TEC technote is available:

1) On Compuserve [GO QUARTERDECK, Library 2]. Download STEALT.ZIP.
2) On the Quarterdeck BBS [310-314-3227]. Download STEALTH.TEC.
3) On the Quarterdeck Q/FAX [310-314-3214]. Download FAX# 205 (Q/FAX
will automatically fax this back to your fax machine instantly!).
4) Call Quarterdeck Technical Support [310-392-2701] and we will
gladly fax/mail it to you.

Once you have resolved the Stealth-related problem with the current
CONFIG.SYS, then go to STEP C.
------------------------------------------------------------------------

(STEP - A)
----------
The problem you are having requires further troubleshooting techniques
and investigation. Call our Technical Support line at (310) 392-9701 for
further assistance, we'll be happy to help out!
When you call, please have available the following files available:

Your original CONFIG.SYS and AUTOEXEC.BAT files
CONFIG.SYS (QEMM386.SYS and FILES=)
AUTOEXEC.BAT (PATH and PROMPT)
CONFIG.Q (only if you have gone thru STEP 11)
CONFIG.M (only if you have gone thru STEP 12)

Be sure to mention that you have been using EX13FLOW.TEC.

(STEP - B)
----------

We have shown that the program in question has problems EVEN WHEN QEMM-
386 IS NOT LOADED ON YOUR MACHINE. QEMM is not responsible for the system
crashes you are experiencing. The next step is for you to consult the
documentation or contact the makers of the resident program or driver which is
making your system crash.

(STEP - C)
----------
CONGRATULATIONS, you have successfully configured QEMM-386 and your
program to work together! Enter the following 6 commands at the DOS prompt:

1) C:
2) CD\
3) RENAME AUTOEXEC.BAT AUTOEXEC.Q
4) COPY CONFIG.SYS CONFIG.Q
5) COPY CONFIG.OLD CONFIG.SYS [Bring back your original file]
6) COPY AUTOEXEC.OLD AUTOEXEC.BAT [Bring back your original file]

Edit the CONFIG.SYS file and replace the original QEMM386.SYS line with
the one you have created by using this technote (now in CONFIG.Q) and make
sure FILES= at least 40!
Reboot the machine and try to re-create the Exception #13 crash.

??? If the problem is still no longer occurring, the problem is solved.
HAVE A GREAT DAY!!!

??? If the problem now occurs, then go to STEP D.

(STEP - D)
----------
Since the problem does not occur with the stripped down CONFIG.SYS and
AUTOEXEC.BAT but does occur with a full CONFIG.SYS and AUTOEXEC.BAT file,
there is a command line in one of these files that has been causing the
Exception #13 problem. To determine which file the command line is in, we
will bring back the AUTOEXEC.BAT (Path and Prompt) that we previously created
in STEP 8:

Enter the following 4 commands at the DOS prompt:

1) C:
2) CD\
3) COPY AUTOEXEC.BAT AUTOEXEC.OLD
4) COPY AUTOEXEC.Q AUTOEXEC.BAT

Reboot your machine and try to re-create the Exception #13 crash.

??? If the problem still exists, than we know that the command line
which is giving us problems is located in the CONFIG.SYS file and if
the problem goes away, the command line is in the original AUTOEXEC.BAT
file.

Now you must systematically determine which command line is giving you
trouble! Try deleting one line at a time (if you have a long CONFIG.SYS or
AUTOEXEC.BAT file try deleting 2-3 lines at a time) until you find out which
line is causing the problem.
When you finally determine which line is causing the problem:

1) If the device driver or TSR is loaded into High RAM, use the procedure
in STEP 8 to load it low and see if this corrects the problem.
2) Read the manual or call the technical support of the product which you
are loading to determine where the problem might lie.
3) If a TSR or device driver has a parameter that tells it to load/use
XMS or EMS, then have it load/use conventional memory instead.
4) Refer to your DOS manual to determine DOS command problems.
5) JUST GET RID OF THAT LINE!

************************************************************************
* Trademarks are property of their respective owners. *
*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) 1992 by Quarterdeck Office Systems *
************************ E N D O F F I L E *************************