home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / TGARTS.ZIP / DVTECH.ZIP / STEALTH.TE2 < prev    next >
Text File  |  1995-11-04  |  22KB  |  460 lines

  1.  
  2.                  Troubleshooting Stealth ROM
  3.  
  4.  Quarterdeck Technical Note #205             Filename: STEALTH.TEC
  5.  by Quarterdeck Testing & Compatibility    CompuServe: STEALT.ZIP
  6.  Last revised: 4/02/95                       Category: QEMM
  7.  
  8.  Subject: Troubleshooting and resolving rare problems with Stealth
  9.           ROM, and extensive information on how Stealth ROM works.
  10.  
  11.  Stealth ROM may seem mysterious and cryptic, but it really is not.
  12.  This note tells you how to diagnose and solve problems related to
  13.  the Stealth ROM feature of QEMM. Although this note may appear
  14.  lengthy, it is detailed and informative. For those who are more
  15.  interested in fast solutions, the path to resolving a problem is
  16.  quite straightfoward and quick.
  17.  
  18.  Q. What do I need to know first?
  19.  
  20.  Before beginning the steps outlined in this technote, please
  21.  review the information in Quarterdeck Technical Note #248,
  22.  "Product Compatibility Information" (PRODUCTS.TEC), which contains
  23.  information on various hardware and software products that may
  24.  require specific treatment with Stealth ROM. This bulletin can be
  25.  found in your QEMM\TECHNOTE directory.
  26.  
  27.  If you are reading this technote because QEMM displayed the
  28.  message "Disabling Stealth ROM becauase QEMM cannot find the ROM
  29.  handler for INT xx", you should instead refer to Quarterdeck
  30.  Technical Note #233, "QEMM and the XSTI Parameter" (XSTI.TEC).
  31.  This note can also be found in your QEMM\TECHNOTE directory.
  32.  
  33.  You may also wish to consult Quarterdeck Technical Note #168,
  34.  "QEMM's Stealth ROM Technology" (STLTECH.TEC") for background
  35.  information on Stealth ROM and how it works.
  36.  
  37.  Q. How do I resolve a conflict with Stealth ROM?
  38.  
  39.  In almost all cases, the OPTIMIZE program that comes with QEMM
  40.  will detect and resolve automatically any aspect of your system's
  41.  hardware or basic configuration that is incompatible with Stealth.
  42.  OPTIMIZE cannot, however, anticipate the behaviour of programs
  43.  that are not run as part of your CONFIG.SYS, AUTOEXEC.BAT, or
  44.  other batch files that are CALLed as part of your system's startup
  45.  process.  The following troubleshooting procedure is divided into
  46.  simple steps, contained in several sections, to address
  47.  compatibility issues with programs that are not run as part of the
  48.  startup process, or that manage to evade OPTIMIZE's automatic
  49.  handling of Stealth ROM.
  50.  
  51.                          SECTION ONE
  52.  
  53.  1) The first step is to ascertain whether Stealth ROM is involved
  54.     with the problem. Remove the Stealth ROM parameter (ST:M or
  55.     ST:F) from the QEMM device line in your CONFIG.SYS file and
  56.     rerun Optimize. When Optimize completes, try to duplicate the
  57.     problem. If the problem still happens, then Stealth ROM is not
  58.     causing the problem, and you should refer to the
  59.     troubleshooting section of your QEMM manual for further
  60.     information. However, if removing ST:M or ST:F solves the
  61.     problem, proceed to Step 2.
  62.  
  63.  2) Now that we have proven that Stealth ROM is involved in the
  64.     problem, add the Stealth ROM parameters ST:M and XST=F000 to
  65.     the QEMM device line in the CONFIG.SYS file. Your QEMM line
  66.     would look something like this:
  67.  
  68.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=F000
  69.  
  70.     Reboot the computer. If this step solves the problem, go on to
  71.     Step 3 immediately below; if it does not, go to SECTION TWO.
  72.  
  73.  3) If XST=F000 solves your problem replace this parameter with
  74.     X=F000-FFFF, reboot your computer, and try again to create the
  75.     problem. The QEMM line in your CONFIG.SYS file would look
  76.     something like this:
  77.  
  78.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=F000-FFFF
  79.  
  80.     If the problem persists, go to Step 4 below. If you cannot
  81.     recreate the problem with the above line, add the parameter
  82.     FSTC to the end of the line as follows:
  83.  
  84.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=F000-FFFF FSTC
  85.  
  86.     and reboot. If this step solves the problem, continue on. If
  87.     it does not (and FSTC may not work in all circumstances) then
  88.     remove the FSTC parameter and reboot with the previous QEMM
  89.     line. In either case, run Manifest (by typing MFT from the DOS
  90.     prompt) and look at the QEMM/Analysis screen. The last line
  91.     should look something like this:
  92.  
  93.     Fn00 IIII IIII IIII IIOO
  94.  
  95.     Since the entire F000-FFFF range is EXCLUDEd, Analysis here is
  96.     suggesting that the last two 4K pages of the F region are Okay
  97.     (that is, the EXCLUDE is appropriate for the region FE00-FFFF)
  98.     and that the other pages are INCLUDEable (that is, the EXCLUDE
  99.     is not needed for these pages). This is so because some program
  100.     or piece of hardware is trying to read the contents of the last
  101.     two pages of ROM directly, rather than accessing them through
  102.     interrupts. QEMM must be prevented from mapping High RAM over
  103.     this ROM to allow the ROM to be be accessed directly. This is
  104.     done by using the EXCLUDE parameter. In our example the target
  105.     region is FE00-FFFF; thus appropriate EXCLUDE is X=FE00-FFFF
  106.     and the QEMM line would look like this:
  107.  
  108.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=FE00-FFFF
  109.  
  110.     This EXCLUDE allows Stealth ROM to do its job and costs only 8K
  111.     of High RAM. If you are at this point, your problem is solved
  112.     and you do not need to continue with this technical note.
  113.  
  114.  4) If XST=F000 solves your problem while X=F000-FFFF does not, try
  115.     changing ST:M to ST:F, and remove XST=F000. You may end up with
  116.     more High RAM with ST:F than with ST:M and XST=F000. However,
  117.     if ST:F fails, remove ST:F and place ST:M and XST=F000 back on
  118.     the QEMM386.SYS line.
  119.  
  120.  
  121.                          SECTION TWO
  122.  
  123.  This section is ONLY for systems that have video ROMs--that is,
  124.  systems with an EGA or VGA video card. CGA color and
  125.  Hercules-compatible monochrome systems do not have video ROM; If
  126.  you have one of these systems, proceed to Section Three.
  127.  
  128.  Manifest, on its First Meg Overview screen will identify the ROMs
  129.  on your system when Stealth ROM is inactive. On most systems, the
  130.  Video ROM is located at C000-C7FF and uses 32K of upper memory
  131.  address space. Some machines (particularly Micro Channel machines
  132.  such as the IBM PS/2 family) have a video ROM elsewhere, generally
  133.  at E000. If this is true of your system, you should use E000 (or
  134.  wherever your video ROM begins) instead of C000 in the QEMM386.SYS
  135.  lines that follow.
  136.  
  137.  5) If XST=F000 does not solve your problem, try XST=C000. The
  138.     QEMM line of the CONFIG.SYS would look like this:
  139.  
  140.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=C000
  141.  
  142.     If XST=C000 does not work, go on to Section Three. If XST=C000
  143.     does work, proceed to Step 6 immediately below.
  144.  
  145.  6) If XST=C000 solves the problem, try placing the page frame at
  146.     C000 by removing XST=C000 and adding FR=C000 to the QEMM386.SYS
  147.     line. Do this only if the entire C000 range is available--that
  148.     is, no device is using address space between C000 and CFFF for
  149.     Adapter ROM or RAM. The QEMM line of the CONFIG.SYS would look
  150.     like this:
  151.  
  152.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M FR=C000
  153.  
  154.     If this works, you may find this an acceptable solution. All
  155.     the address space in which High RAM can be created is being
  156.     used in this configuration, and you will want to stop
  157.     troubleshooting here. If this step does not work (or if you
  158.     cannot put the page frame at C000) go on to Step 7 below.
  159.  
  160.  7) If XST=C000 solves the problem but you do not want to put the
  161.     page frame at C000 (or cannot for some reason) then try the
  162.     parameter F10:N (or FASTINT10:N). By default QEMM uses its own
  163.     code for some video functions, rather than the video ROM's own
  164.     code. The F10:N parameter tells QEMM not to perform this
  165.     function. The QEMM line of the CONFIG.SYS would look like this:
  166.  
  167.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M F10:N
  168.  
  169.     If this step works, all ROMs are being Stealthed at the expense
  170.     of some speed. You may find this satisfactory, at which point
  171.     you may stop here. If you do not find the modest decrease in
  172.     speed acceptable, or if this step does not work, proceed to
  173.     Step 8 immediately below.
  174.  
  175.  8) If XST=C000 solves the problem but FR=C000 or FASTINT10:N does
  176.     not (or you either cannot put the Page Frame at C000 or do not
  177.     want to use FASTINT10:N) then replace XST=C000 with
  178.     X=C000-C7FF. The QEMM line of the config.sys would look like
  179.     this:
  180.  
  181.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C7FF
  182.  
  183.     If replacing the XST=C000 parameter with X=C000-C7FF does not
  184.     work then you should replace the X=C000-C7FF with XST=C000,
  185.     which will avoid all Stealth conflicts with your system's video
  186.     ROMs; you may stop troubleshooting here.
  187.  
  188.     If replacing the XST=C000 parameter with X=C000-C7FF works, add
  189.     the parameter FSTC to the QEMM line:
  190.  
  191.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C7FF FSTC
  192.  
  193.     Reboot your computer. If this step works, continue on; if this
  194.     step does not work (and FSTC may not work in all circumstances)
  195.     then remove the FSTC parameter and reboot with the previous
  196.     QEMM line.
  197.  
  198.     In either case, run Manifest (by typing MFT at the DOS prompt)
  199.     and look at the QEMM/Analysis screen. The Cn00 line should look
  200.     something like this:
  201.  
  202.     Cn00 OIII IIII OOOO OOOO
  203.  
  204.     This indicates that the first 4K region of the C000 range (in
  205.     the video ROM) is being accessed directly. This portion of the
  206.     address space must be EXCLUDED from QEMM's use when Stealth ROM
  207.     is enabled. The appropriate QEMM line in the CONFIG.SYS would
  208.     be:
  209.  
  210.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C0FF
  211.  
  212.                      SECTION THREE
  213.  
  214.  9) On some machines there are other ROMs that can be Stealthed.
  215.     Typically these are disk ROMs; sometimes they are associated
  216.     with network cards or with other peripherals. To determine if
  217.     your system has one of these other ROMs, boot your system
  218.     without ST:M or ST:F and check the First Meg / Overview screen
  219.     in Manifest. If you see more than two ROMs listed, than your
  220.     system has another ROM. Troubleshooting Stealth ROM with these
  221.     ROMs involves a similar procedure to those above; that is, add
  222.     XST=??00 (using the beginning address of that particular ROM).
  223.     If this solves the problem, replace the XST=??00 with the
  224.     appropriate EXCLUDE (X=??00-!!FF, replacing ??00 and !!FF with
  225.     the beginning and ending addresses of the ROM) to determine
  226.     whether the problem is related to Stealth or to the fact that
  227.     some portion of the ROM's address space needs to be directly
  228.     accessible.
  229.  
  230.     If some portion of the address space must be EXCLUDED for
  231.     Stealth ROM to work you should check Analysis with the FSTC and
  232.     X=??00-!!FF parameters on the QEMM line in a manner similar to
  233.     that detailed in Step 3.
  234.  
  235.     The trick of placing the page frame at the beginning of the ROM
  236.     may also work here as well. If XST=??00 solves your problem,
  237.     try replacing it with FR=??00. This is possible if there is a
  238.     64K portion of the address space that is either ROM or RAM
  239.     beginning at ??00, and if ?? is a multiple of 16K.
  240.  
  241.  10) Use XST=F000, XST=C000, and XST=??00 simultaneously for all
  242.      ROMs being Stealthed. Then replace the XSTs one by one with
  243.      the appropriate regular Exclude (X=F000-FFFF, X=C000-C7FF,
  244.      X=??00- !!FF...) and look at the QEMM/ Analysis screen of
  245.      Manifest to see what portions of the address space need to be
  246.      directly available.
  247.  
  248.  11) If ST:M with XST on all Stealthed ROMs fails, add the
  249.      following parameters to the QEMM line we used in Step 10:
  250.  
  251.      FB:N UFP:N VHI:N F10:N
  252.  
  253.      If this works, remove the XSTs one at a time to determine
  254.      which one(s) you actually need. If an XST alone does not solve
  255.      the problem, turn back to SECTION ONE for help in determining
  256.      the appropriate XST or EXCLUDE while keeping the above
  257.      parameters. The parameters are explained later in this
  258.      technote as well as in your QEMM manual.
  259.  
  260.  12) If ST:M does not work, try ST:F instead. If ST:F does not
  261.      work, try ST:F XST=C000 (and XST=??00) for Stealthed ROMs
  262.      other than the one(s) the page frame overlays.
  263.  
  264.  13) If none of these steps solves the problem, Quarterdeck's
  265.      Testing and Compatibility Department wants to know what
  266.      program or device is failing (and at what point). Please
  267.      contact our Technical Support staff so that our technicians
  268.      can get all the necessary information about your problem.
  269.  
  270.  The following section contains questions and answers on various
  271.  aspects of Stealth and its parameters. Again, you may wish to
  272.  consult Quarterdeck Technical Note #168, "QEMM's Stealth ROM
  273.  Technology" (STLTECH.TEC") for background information on
  274.  Stealth ROM and how it works.
  275.  
  276.  Q. I have a ROM that is not being turned in High RAM by
  277.     Stealth ROM. Why?
  278.  
  279.  A. QEMM's Stealth ROM feature relocates ROMs which are accessed
  280.     through the use of interrupts. A ROM that is not Stealthed may
  281.     still have regions that are never used during the system's
  282.     normal operation. Some disk ROMs, video ROMs, and devices that
  283.     only use their ROMs during bootup (before the CONFIG.SYS is
  284.     loaded) fit into this category. You may be able to get more
  285.     High RAM by INCLUDING these unused regions on the QEMM386.SYS
  286.     device driver line in CONFIG.SYS. To find out what addresses
  287.     you can include, run the Analysis procedure, then use the
  288.     INCLUDE parameter to include these addresses. Refer to your
  289.     QEMM manual for further information on Analysis.
  290.  
  291.  Q. What is FASTINT10:N?
  292.  
  293.  A. When Stealthing a video ROM, QEMM replaces some of the video
  294.     ROM's routines with code written by Quarterdeck. This
  295.     replacement code is suitable for almost all video cards. The
  296.     FASTINT10:N parameter (which may be abbreviated F10:N) tells
  297.     QEMM not to use its code but the code of the video ROM instead.
  298.     This in no way limits the amount of High RAM Stealth ROM
  299.     creates and may be an acceptable solution for those users who
  300.     need it. It should only be necessary on unusual video cards. If
  301.     placing the page frame at the beginning of the video card's ROM
  302.     works or if a small regular exclude also solves the problem you
  303.     may choose to use F10:N instead.
  304.  
  305.  Q. What is FSTC?
  306.  
  307.  A. In addition to program code, ROMs contain various tables of
  308.     information. A ROM may itself access these tables directly.
  309.     When the ROM is being Stealthed normally, Stealth ROM will
  310.     prevent direct access to the ROM by copying various tables into
  311.     QEMM's own data area, which uses some extra memory -- usually
  312.     in High RAM. When a ROM is being Stealthed but the address in
  313.     which the ROM resides is EXCLUDEd (as with X=C000-C7FF), QEMM
  314.     cleverly figures out that it does not need to make copies of
  315.     these tables in its own data area. QEMM therefore saves memory
  316.     by not making copies of the tables. However, if the copy is not
  317.     made, portions of the ROM where these tables are stored will be
  318.     accessed directly. This will cause Analysis to report that a
  319.     portion of the address space is OK when EXCLUDED even though it
  320.     would not be accessed directly were it not EXCLUDED.
  321.  
  322.     FSTC (which stands for ForceStealthTableCopy) makes the
  323.     Analysis procedure accurate by forcing QEMM to make copies of
  324.     these tables so that inappropriate EXCLUDEs are not
  325.     recommended.
  326.  
  327.     Some system and video ROMs may not function properly with the
  328.     FSTC parameter. If this is the case on your system you will
  329.     have to perform the Analysis procedure without the FSTC
  330.     parameter. However, you should be aware in this case that some
  331.     of the EXCLUDE statements that Analysis prompts you to use may
  332.     not be necessary. You can try reducing these EXCLUDES on a
  333.     trial-and-error basis if you wish.
  334.  
  335.     FSTC should only be used when you are testing a portion of a
  336.     ROM's address space for direct access by excluding the whole
  337.     ROM. It is not an appropriate parameter for a final
  338.     configuration.
  339.  
  340.  Q. What is FB:N?
  341.  
  342.     FB:N, short for FRAMEBUF:N, disables QEMM's feature of breaking
  343.     up disk reads into the page frame and disk writes from the page
  344.     frame. FB:Y is the default with Stealth ROM; FB:N is the
  345.     default without Stealth ROM.
  346.  
  347.  Q. What is UFP:N?
  348.  
  349.  A. When Stealth ROM is active, and when no program is using
  350.     expanded memory, QEMM unmaps the memory left in the page frame.
  351.     This allows the ROM underneath the page frame to be visible, in
  352.     case some program reads that ROM directly. However some
  353.     programs use expanded memory and then free an EMS handle (which
  354.     is tantamount to ceasing to use that expanded memory) and yet
  355.     expect the page frame to contain the memory that they last
  356.     mapped there. The UFP:N (abbreviation for UNMAPFREEPAGES)
  357.     parameter tells QEMM not to unmap the EMS page, which will make
  358.     such programs work with Stealth ROM. Of course such programs
  359.     violate the EMS specification by abandoning the EMS handle (and
  360.     apparently common sense) but expecting the page frame to
  361.     contain the memory just released. UFP:N is the default without
  362.     Stealth ROM.
  363.  
  364.  Q. What are advanced disk features? What is VHI:N?
  365.  
  366.  A. The BIOS has a set of function calls intended for use by
  367.     multitasking programs. These are INT 15h, functions 90h and
  368.     91h. The system ROM or disk ROM may issue the INT 15h, Fn 90h
  369.     call while it is waiting for the disk controller to read or
  370.     write a sector, allowing other programs to execute during this
  371.     wait. When the sector is ready, the disk interrupt handler
  372.     issues an INT 15h, Fn 91h, signalling the multitasking program
  373.     that the disk information is ready to be processed by the
  374.     system or disk ROM.
  375.  
  376.     The "advanced features" of some disk caches hook this call to
  377.     allow your system to go ahead and execute your current program
  378.     while the system or disk ROM is waiting for its requested
  379.     sector. Although such caches properly preserve the stack and
  380.     register state for the BIOS and the application when doing this
  381.     pseudo-multitasking, they do not preserve the mapping of the
  382.     page frame. Therefore, if a BIOS call causes the page frame to
  383.     be used (as is the case with Stealth ROM active), conflicts and
  384.     system failures could result. Since most disk caches do not
  385.     preserve the page frame properly, QEMM automatically suppresses
  386.     INT 15h, Fn 90h calls from the BIOS, effectively disabling
  387.     advanced disk features. Caches that save and restore the page
  388.     frame when using advanced disk features can use a programming
  389.     interface to QEMM to re-enable advanced disk features.
  390.  
  391.     You may defeat QEMM's defeating of this feature with the
  392.     VIRTUALHDIRQ:N (VHI:N) parameter on the QEMM device line in
  393.     your CONFIG.SYS file. If your cache uses INT 15h Fn 90h as one
  394.     of its advanced features, and does not save and restore the
  395.     page frame you will crash or corrupt data on the cached
  396.     drive(s).
  397.  
  398.  Q. Can I load a driver that uses ROM before QEMM?
  399.  
  400.  A. You can load a device driver that uses a ROM before QEMM and
  401.     still Stealth that ROM by loading the driver HOOKROM.SYS (found
  402.     in your QEMM directory) before you load this driver. directory.
  403.     Here is an example of a CONFIG.SYS file that loads HOOKROM,
  404.     then a driver that uses a ROM, then QEMM with Stealth ROM
  405.     enabled:
  406.  
  407.     DEVICE=C:\QEMM\HOOKROM.SYS
  408.     DEVICE=C:\DISK\ROMDRIVER.SYS
  409.     DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M
  410.  
  411.     For a more detailed explanation of HOOKROM, refer to XSTI.TEC
  412.     in your QEMM\TECHNOTE directory.
  413.  
  414.  Q. Why does my computer's BIOS Setup program fail when I use ST:M?
  415.  
  416.  A. Many machines have a built-in System Setup program in the BIOS
  417.     ROM that can be popped up via a keystroke. Stealth ROM may make
  418.     this feature inaccessible to you after your system has booted.
  419.     Because the Setup program accesses the ROM directly, you must
  420.     EXCLUDE the portion of address space where it is stored in
  421.     order for it to work after QEMM has been loaded and Stealth ROM
  422.     enabled. On most machines this Setup program is found in F000-
  423.     F7FF.
  424.  
  425.     You may decide that you would rather have access to the Setup
  426.     program ONLY on bootup and use this portion of the address
  427.     space for High RAM. Since you must reboot your computer after
  428.     making changes in your CMOS Setup anyway, most users consider
  429.     this a fair trade.
  430.  
  431.  Q. How does Stealth ROM work? What can cause it to fail?
  432.  
  433.  A. Refer to consult Quarterdeck Technical Note #168, "QEMM's
  434.     Stealth ROM Technology" (STLTECH.TEC") for background
  435.     information on Stealth ROM and how it works and what can
  436.     interfere with it.
  437.  
  438.  SUMMARY:
  439.  
  440.  The Stealth ROM technology has been exhaustively tested. Due to
  441.  the wide variety of software and hardware in the PC world,
  442.  however, Stealth ROM cannot be guaranteed to work with every
  443.  configuration. The actual Stealthing of interrupts is very
  444.  successful. Most failures are due to programs (or other ROMs)
  445.  trying to access a portion of the ROM directly rather than by
  446.  means of interrupt, and most of these failures can be resolved via
  447.  the techniques in this note.
  448.  
  449.  If you experience a problem that you are unable to resolve using
  450.  the steps outlined in this technical bulletin, Quarterdeck would
  451.  very much like to hear about it.
  452.  
  453.  ******************************************************************
  454.  *      Trademarks are property of their respective owners.       *
  455.  *   This and other technical notes may be available in updated   *
  456.  *     forms through Quarterdeck's standard support channels.     *
  457.  *          Copyright (C) 1995 Quarterdeck Corporation            *
  458.  ******************** E N D   O F   F I L E ***********************
  459.  
  460.