
        QEMM Analysis Procedure for Solving Memory Conflicts

 Quarterdeck Technical Note #219              Filename: EXCLUDE.TEC
 by Quarterdeck Testing & Compatibility     CompuServe: EXCLUD.TEC
 Last revised:  7/02/92                       Category: QEMM

 Subject: Finding potential conflicts in the address space between
          640K and 1MB by using QEMM's Analysis procedure.  An
          important note for users on network workstations.

 Q. What is Analysis?

 A. Whenever QEMM is "on" it monitors the use of the first megabyte
    of address space.  The QEMM/ANALYSIS screen of Manifest shows
    what portions of the address space need to be EXCLUDEd to avoid
    High RAM conflicts.


 Q. Why should I use Analysis?

 A. If you are getting an Exception #13, are unable to access your
    network when QEMM is installed, cannot access a floppy, print,
    run some program, lock-up at some identifiable point in
    operating your computer (from booting to running your word
    processor), or have some other problem when running QEMM that
    you do not have when you do not run QEMM, then the ANALYSIS
    procedure may be a useful diagnostic process.


 Q. Why is this necessary?

 A. This procedure is necessary sometimes because Adapter ROMs and
    Adapter RAMs do not identify themselves in such a way as to be
    detected properly by QEMM.  Adapter ROMs are supposed to
    identify their length in the third byte of the ROM itself but
    sometimes report a smaller size.  Adapter RAMs that are not
    active at boot look exactly like unoccupied address space. QEMM
    maps unused portions of the system BIOS ROM and will map over
    such adapter ROMs and RAMs.  Some special CGA video cards have
    two pages of video:  one at B800-BBFF, the second at BC00-BFFF.
    QEMM may map over the second page, causing a conflict if you
    run a program that tries to use the second page.  In rare
    circumstances there are programs that use portions of the high
    address space directly.


 Q. How does Analysis work?

 A. The QEMM/ANALYSIS screen of Manifest is a cross-reference
    between the QEMM/TYPE and QEMM/ACCESSED screens.  The TYPE
    screen shows what QEMM thinks the address space is used for:
    Video, ROM, Page frame, High RAM, etc.  The ACCESSED screen
    shows whether the address space has been accessed.  When QEMM
    is neither accessing the high address space (by creating High
    RAM -- when the RAM parameter is on the QEMM386.SYS line in
    CONFIG.SYS), and when some portion of the address space is
    being accessed by something that QEMM has not detected
    automatically, a portion   of the address space must be
    EXCLUDEd.  Analysis displays the correct range to EXCLUDE.


 Q. How do I use ANALYSIS to find EXCLUDEs?

 A. First remove the RAM parameter from the QEMM386.SYS line of the
    CONFIG.SYS and add the ON and MA=0 parameters.  This is to make
    sure that QEMM386 is not itself a user of the high address
    space, and that to ensure that QEMM on.  Then reboot the
    machine and run the software that was causing the problem. The
    problem should not recur; if it does, a High RAM conflict is
    not the problem, and you should consult Quarterdeck Technical
    Note #241, QEMM General Troubleshooting (TROUBLE.TEC).  Without
    rebooting, look at the QEMM / ANALYSIS screen in Manifest.  If
    you see Xs, then these portions of the address space must be
    EXCLUDEd on the QEMM386.SYS line of the CONFIG.SYS.  See the
    QEMM manual section on the syntax of the EXCLUDE parameter. If
    the QEMM is putting the page frame over a portion of the
    address space that QEMM should not be mapping then it may be
    necessary to put the parameter FR=NONE on the QEMM386.SYS line
    of the CONFIG.SYS during the ANALYSIS process. Once you are
    done with the ANALYSIS process you can restore the RAM
    parameter to the QEMM386.SYS line along with the appropriate
    EXCLUDEs.


 Q. How can Analysis fail?

 A. The only serious pitfall to the ANALYSIS process is that there
    are users of the high address space that use the high address
    space only momentarily.  There is, for example, a Bernoulli
    drive that has an Adapter ROM in the high address space.  At
    boot time, the device driver for the Bernoulli Box searches for
    the ROM at the beginning of every 8K portion of the address
    space beginning at C800.  If the Adapter ROM is at DC00 then
    the device driver will access every other 4k of the address
    space from C800 to DC00.  This causes Xs to appear in every
    other block in this area, even though the areas between
    C800-DBFF are only being used during the searching process.
    Most of these areas need not be excluded.  The range from
    DC00-DEFF, where the Adapter ROM of the Bernoulli Box resides,
    may require an EXCLUDE.

    When you go into enhanced mode of Microsoft's Windows then QEMM
    is not active and the ANALYSIS process is not useful for the
    period of time that you are in enhanced mode.


 Q. What cost can there be in excluding an area?

 A. EXCLUDEing a portion of the address space will only cost you,
    at the worst, a bit of usable high RAM.  It will not make your
    system malfunction in any other way, and is likely to improve
    stability.

    If you add an EXCLUDE you should run OPTIMIZE again because
    your available High RAM regions have been resized and perhaps
    renumbered.


 Q. What about those green "I"s?

 A. The green I you see on the QEMM/ANALYSIS screen indicates that
    this portion of the address space has not been accessed by
    anyone YET and QEMM is not mapping this portion of the address
    space.  It is quite possible that this portion of the address
    space will be accessed later.  (The portion of the system BIOS
    ROM that contains the code for controlling the floppy drive may
    report that it is INCLUDable until you actually use the drive.
    If you INCLUDE it you will have no problem until you access a
    floppy.)  The QEMM manual discusses the use of the ANALYSIS
    process for this purpose; this document does not.


 Q. How do I perform the Analysis procedure?

 A. A thorough Analysis requires that you run all your programs.
    However, if a specific program seems to be exhibiting a High
    RAM conflict, you need only do a mini-Analysis by running the
    program that seems to be exhibiting the problem.  As an
    example, suppose that you have installed an adapter card and
    software for a scanner. While the device driver for the scanner
    loads in CONFIG.SYS, part of the hardware is not accessed until
    you scan a document.  This causes a crash, since QEMM has
    mapped High RAM over the address space that the adapter and the
    software expect to use.  (It is unlikely, incidentally, that
    OPTIMIZE will fail to detect the card properly.)

    To begin the ANALYSIS process, modify your QEMM386.SYS line to
    look like this:

    DEVICE=C:\QEMM\QEMM386.SYS ON MA=0

    Reboot your machine.  In this example, we would access the
    hardware by scanning a document.  After doing this, start
    Manifest by going to the DOS prompt and typing

    MFT

    Select the QEMM / Type screen by typing Q, and then Y. Manifest
    will display a chart something like the following:

         n=0123 4567 89AB CDEF
      0n00 XXXX XXXX XXXX XXXX
      1n00 ++++ ++++ ++++ ++++
      2n00 ++++ ++++ ++++ ++++
      3n00 ++++ ++++ ++++ ++++
      4n00 ++++ ++++ ++++ ++++
      5n00 ++++ ++++ ++++ ++++
      6n00 ++++ ++++ ++++ ++++
      7n00 ++++ ++++ ++++ ++++
      8n00 ++++ ++++ ++++ ++++
      9n00 ++++ ++++ ++++ ++++
      An00 VVVV VVVV VVVV VVVV
      Bn00 ++++ ++++ VVVV VVVV
      Cn00 RRRR RRRR ++++ ++++
      Dn00 R+++ ++++ ++++ ++++
      En00 FFFF FFFF FFFF FFFF
      Fn00 ++++ +++R RRRR RRRR

    Look at the Dn00 line.  This indicates that QEMM is identifying
    an Adapter ROM in D000-D0FF.  Now select the QEMM / Accessed
    screen by pressing the C key.  Manifest will display a screen
    that looks like this:

         n=0123 4567 89AB CDEF
      0n00 WWWW AAAA AWWW WWWW
      1n00 WWWW WWWW WWWW WWWW
      2n00 WWWW WWWW WWWW WWUU
      3n00 UUUU UUUU UUUU UUUU
      4n00 UUUU UUUU UUUU UUUU
      5n00 UUUU UUUU UUUU UUUU
      6n00 UUUU UUUU UUUW WWWW
      7n00 WWWW WWWW WWWW WWWW
      8n00 WUUU UUUU WWUU UUUU
      9n00 UUUU UUUU WWWW WWWW
      An00 WWUU UUUU UUUU UUUU
      Bn00 UUUU UUUU WWWW WWWW
      Cn00 WWWW WWWW UUUU UUUU
      Dn00 WWAA UUUU UUUU UUUU
      En00 UUUU UUUU UUUU UUUU
      Fn00 UUUU UUUU UUUU UUUW

    Look at the Dn00 line:  QEMM is detecting that D000-D3FF is
    actually being accessed, D000-D1FF being written to and
    D200-D3FF only being read, and is passing this information to
    Manifest.  Now choose the QEMM / Analysis screen by pressing
    the N key:

         n=0123 4567 89AB CDEF
      0n00 OOOO OOOO OOOO OOOO
      1n00 OOOO OOOO OOOO OOOO
      2n00 OOOO OOOO OOOO OOOO
      3n00 OOOO OOOO OOOO OOOO
      4n00 OOOO OOOO OOOO OOOO
      5n00 OOOO OOOO OOOO OOOO
      6n00 OOOO OOOO OOOO OOOO
      7n00 OOOO OOOO OOOO OOOO
      8n00 OOOO OOOO OOOO OOOO
      9n00 OOOO OOOO OOOO OOOO
      An00 OOOO OOOO OOOO OOOO
      Bn00 OOOO OOOO OOOO OOOO
      Cn00 OOIO OIOO OOOO OOOO
      Dn00 OXXX OOOO OOOO OOOO
      En00 OOOO OOOO OOOO OOOO
      Fn00 OOOO OOOO OOOO OOOO

     Press the F3 key to display the information in List Mode.
     You will see a table that looks like this:

      Memory Area   Size   Status
      0000 - C1FF   776K  OK
      C200 - C2FF     4K  Include
      C300 - C4FF     8K  OK
      C500 - C5FF     4K  Include
      C600 - D0FF    44K  OK
      D100 - D3FF    12K  Exclude
      D400 - FFFF   176K  OK

     ANALYSIS is showing that D000-D3FF needs to be EXCLUDEd. This
     is the sort of address range that might be associated with a
     scanner card at D000.  In the example above, QEMM accurately
     identifies a 4K adapter ROM on boot; in fact, the example card
     has an unmarked RAM buffer on it as well.  The ACCESSED map
     above shows that 16K is being accessed, and the ANALYSIS map
     is pointing out that the additional 12K must be EXCLUDEd.
     Note that unlike the display above, there should be no spaces
     within the EXCLUDE parameter.  That is,

     X=D100 - D3FF

     is NOT a valid QEMM parameter, while

     X=D100-D3FF

     is valid.

     Thus, a CONFIG.SYS line to account for the scanner, based on
     our mini-Analysis procedure, would look like this:

     DEVICE=C:\QEMM\QEMM386.SYS RAM X=D100-D3FF

     (Increasing the range of the EXCLUDE such that it covers
     D000-D3FF is not harmful in any way.)

 Summary
 =======

 QEMM does its best to identify users of the high address space,
 but hardware not accessed at boot time may not be detected by
 QEMM.  ANALYSIS allows the user to find areas between 640K that
 are used by hardware.

 ******************************************************************
 *      Trademarks are property of their respective owners.       *
 *   This and other technical notes may be available in updated   *
 *     forms through Quarterdeck's standard support channels.     *
 *          Copyright (C) 1996 Quarterdeck Corporation            *
 ******************** E N D   O F   F I L E ***********************

