home *** CD-ROM | disk | FTP | other *** search
-
- Troubleshooting Stealth ROM
-
- Quarterdeck Technical Note #205 Filename: STEALTH.TEC
- by Quarterdeck Testing & Compatibility CompuServe: STEALT.ZIP
- Last revised: 4/02/95 Category: QEMM
-
- Subject: Troubleshooting and resolving rare problems with Stealth
- ROM, and extensive information on how Stealth ROM works.
-
- Stealth ROM may seem mysterious and cryptic, but it really is not.
- This note tells you how to diagnose and solve problems related to
- the Stealth ROM feature of QEMM. Although this note may appear
- lengthy, it is detailed and informative. For those who are more
- interested in fast solutions, the path to resolving a problem is
- quite straightfoward and quick.
-
- Q. What do I need to know first?
-
- Before beginning the steps outlined in this technote, please
- review the information in Quarterdeck Technical Note #248,
- "Product Compatibility Information" (PRODUCTS.TEC), which contains
- information on various hardware and software products that may
- require specific treatment with Stealth ROM. This bulletin can be
- found in your QEMM\TECHNOTE directory.
-
- If you are reading this technote because QEMM displayed the
- message "Disabling Stealth ROM becauase QEMM cannot find the ROM
- handler for INT xx", you should instead refer to Quarterdeck
- Technical Note #233, "QEMM and the XSTI Parameter" (XSTI.TEC).
- This note can also be found in your QEMM\TECHNOTE directory.
-
- You may also wish to consult Quarterdeck Technical Note #168,
- "QEMM's Stealth ROM Technology" (STLTECH.TEC") for background
- information on Stealth ROM and how it works.
-
- Q. How do I resolve a conflict with Stealth ROM?
-
- In almost all cases, the OPTIMIZE program that comes with QEMM
- will detect and resolve automatically any aspect of your system's
- hardware or basic configuration that is incompatible with Stealth.
- OPTIMIZE cannot, however, anticipate the behaviour of programs
- that are not run as part of your CONFIG.SYS, AUTOEXEC.BAT, or
- other batch files that are CALLed as part of your system's startup
- process. The following troubleshooting procedure is divided into
- simple steps, contained in several sections, to address
- compatibility issues with programs that are not run as part of the
- startup process, or that manage to evade OPTIMIZE's automatic
- handling of Stealth ROM.
-
- SECTION ONE
-
- 1) The first step is to ascertain whether Stealth ROM is involved
- with the problem. Remove the Stealth ROM parameter (ST:M or
- ST:F) from the QEMM device line in your CONFIG.SYS file and
- rerun Optimize. When Optimize completes, try to duplicate the
- problem. If the problem still happens, then Stealth ROM is not
- causing the problem, and you should refer to the
- troubleshooting section of your QEMM manual for further
- information. However, if removing ST:M or ST:F solves the
- problem, proceed to Step 2.
-
- 2) Now that we have proven that Stealth ROM is involved in the
- problem, add the Stealth ROM parameters ST:M and XST=F000 to
- the QEMM device line in the CONFIG.SYS file. Your QEMM line
- would look something like this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=F000
-
- Reboot the computer. If this step solves the problem, go on to
- Step 3 immediately below; if it does not, go to SECTION TWO.
-
- 3) If XST=F000 solves your problem replace this parameter with
- X=F000-FFFF, reboot your computer, and try again to create the
- problem. The QEMM line in your CONFIG.SYS file would look
- something like this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=F000-FFFF
-
- If the problem persists, go to Step 4 below. If you cannot
- recreate the problem with the above line, add the parameter
- FSTC to the end of the line as follows:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=F000-FFFF FSTC
-
- and reboot. If this step solves the problem, continue on. If
- it does not (and FSTC may not work in all circumstances) then
- remove the FSTC parameter and reboot with the previous QEMM
- line. In either case, run Manifest (by typing MFT from the DOS
- prompt) and look at the QEMM/Analysis screen. The last line
- should look something like this:
-
- Fn00 IIII IIII IIII IIOO
-
- Since the entire F000-FFFF range is EXCLUDEd, Analysis here is
- suggesting that the last two 4K pages of the F region are Okay
- (that is, the EXCLUDE is appropriate for the region FE00-FFFF)
- and that the other pages are INCLUDEable (that is, the EXCLUDE
- is not needed for these pages). This is so because some program
- or piece of hardware is trying to read the contents of the last
- two pages of ROM directly, rather than accessing them through
- interrupts. QEMM must be prevented from mapping High RAM over
- this ROM to allow the ROM to be be accessed directly. This is
- done by using the EXCLUDE parameter. In our example the target
- region is FE00-FFFF; thus appropriate EXCLUDE is X=FE00-FFFF
- and the QEMM line would look like this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=FE00-FFFF
-
- This EXCLUDE allows Stealth ROM to do its job and costs only 8K
- of High RAM. If you are at this point, your problem is solved
- and you do not need to continue with this technical note.
-
- 4) If XST=F000 solves your problem while X=F000-FFFF does not, try
- changing ST:M to ST:F, and remove XST=F000. You may end up with
- more High RAM with ST:F than with ST:M and XST=F000. However,
- if ST:F fails, remove ST:F and place ST:M and XST=F000 back on
- the QEMM386.SYS line.
-
-
- SECTION TWO
-
- This section is ONLY for systems that have video ROMs--that is,
- systems with an EGA or VGA video card. CGA color and
- Hercules-compatible monochrome systems do not have video ROM; If
- you have one of these systems, proceed to Section Three.
-
- Manifest, on its First Meg Overview screen will identify the ROMs
- on your system when Stealth ROM is inactive. On most systems, the
- Video ROM is located at C000-C7FF and uses 32K of upper memory
- address space. Some machines (particularly Micro Channel machines
- such as the IBM PS/2 family) have a video ROM elsewhere, generally
- at E000. If this is true of your system, you should use E000 (or
- wherever your video ROM begins) instead of C000 in the QEMM386.SYS
- lines that follow.
-
- 5) If XST=F000 does not solve your problem, try XST=C000. The
- QEMM line of the CONFIG.SYS would look like this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M XST=C000
-
- If XST=C000 does not work, go on to Section Three. If XST=C000
- does work, proceed to Step 6 immediately below.
-
- 6) If XST=C000 solves the problem, try placing the page frame at
- C000 by removing XST=C000 and adding FR=C000 to the QEMM386.SYS
- line. Do this only if the entire C000 range is available--that
- is, no device is using address space between C000 and CFFF for
- Adapter ROM or RAM. The QEMM line of the CONFIG.SYS would look
- like this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M FR=C000
-
- If this works, you may find this an acceptable solution. All
- the address space in which High RAM can be created is being
- used in this configuration, and you will want to stop
- troubleshooting here. If this step does not work (or if you
- cannot put the page frame at C000) go on to Step 7 below.
-
- 7) If XST=C000 solves the problem but you do not want to put the
- page frame at C000 (or cannot for some reason) then try the
- parameter F10:N (or FASTINT10:N). By default QEMM uses its own
- code for some video functions, rather than the video ROM's own
- code. The F10:N parameter tells QEMM not to perform this
- function. The QEMM line of the CONFIG.SYS would look like this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M F10:N
-
- If this step works, all ROMs are being Stealthed at the expense
- of some speed. You may find this satisfactory, at which point
- you may stop here. If you do not find the modest decrease in
- speed acceptable, or if this step does not work, proceed to
- Step 8 immediately below.
-
- 8) If XST=C000 solves the problem but FR=C000 or FASTINT10:N does
- not (or you either cannot put the Page Frame at C000 or do not
- want to use FASTINT10:N) then replace XST=C000 with
- X=C000-C7FF. The QEMM line of the config.sys would look like
- this:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C7FF
-
- If replacing the XST=C000 parameter with X=C000-C7FF does not
- work then you should replace the X=C000-C7FF with XST=C000,
- which will avoid all Stealth conflicts with your system's video
- ROMs; you may stop troubleshooting here.
-
- If replacing the XST=C000 parameter with X=C000-C7FF works, add
- the parameter FSTC to the QEMM line:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C7FF FSTC
-
- Reboot your computer. If this step works, continue on; if this
- step does not work (and FSTC may not work in all circumstances)
- then remove the FSTC parameter and reboot with the previous
- QEMM line.
-
- In either case, run Manifest (by typing MFT at the DOS prompt)
- and look at the QEMM/Analysis screen. The Cn00 line should look
- something like this:
-
- Cn00 OIII IIII OOOO OOOO
-
- This indicates that the first 4K region of the C000 range (in
- the video ROM) is being accessed directly. This portion of the
- address space must be EXCLUDED from QEMM's use when Stealth ROM
- is enabled. The appropriate QEMM line in the CONFIG.SYS would
- be:
-
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M X=C000-C0FF
-
- SECTION THREE
-
- 9) On some machines there are other ROMs that can be Stealthed.
- Typically these are disk ROMs; sometimes they are associated
- with network cards or with other peripherals. To determine if
- your system has one of these other ROMs, boot your system
- without ST:M or ST:F and check the First Meg / Overview screen
- in Manifest. If you see more than two ROMs listed, than your
- system has another ROM. Troubleshooting Stealth ROM with these
- ROMs involves a similar procedure to those above; that is, add
- XST=??00 (using the beginning address of that particular ROM).
- If this solves the problem, replace the XST=??00 with the
- appropriate EXCLUDE (X=??00-!!FF, replacing ??00 and !!FF with
- the beginning and ending addresses of the ROM) to determine
- whether the problem is related to Stealth or to the fact that
- some portion of the ROM's address space needs to be directly
- accessible.
-
- If some portion of the address space must be EXCLUDED for
- Stealth ROM to work you should check Analysis with the FSTC and
- X=??00-!!FF parameters on the QEMM line in a manner similar to
- that detailed in Step 3.
-
- The trick of placing the page frame at the beginning of the ROM
- may also work here as well. If XST=??00 solves your problem,
- try replacing it with FR=??00. This is possible if there is a
- 64K portion of the address space that is either ROM or RAM
- beginning at ??00, and if ?? is a multiple of 16K.
-
- 10) Use XST=F000, XST=C000, and XST=??00 simultaneously for all
- ROMs being Stealthed. Then replace the XSTs one by one with
- the appropriate regular Exclude (X=F000-FFFF, X=C000-C7FF,
- X=??00- !!FF...) and look at the QEMM/ Analysis screen of
- Manifest to see what portions of the address space need to be
- directly available.
-
- 11) If ST:M with XST on all Stealthed ROMs fails, add the
- following parameters to the QEMM line we used in Step 10:
-
- FB:N UFP:N VHI:N F10:N
-
- If this works, remove the XSTs one at a time to determine
- which one(s) you actually need. If an XST alone does not solve
- the problem, turn back to SECTION ONE for help in determining
- the appropriate XST or EXCLUDE while keeping the above
- parameters. The parameters are explained later in this
- technote as well as in your QEMM manual.
-
- 12) If ST:M does not work, try ST:F instead. If ST:F does not
- work, try ST:F XST=C000 (and XST=??00) for Stealthed ROMs
- other than the one(s) the page frame overlays.
-
- 13) If none of these steps solves the problem, Quarterdeck's
- Testing and Compatibility Department wants to know what
- program or device is failing (and at what point). Please
- contact our Technical Support staff so that our technicians
- can get all the necessary information about your problem.
-
- The following section contains questions and answers on various
- aspects of Stealth and its parameters. Again, you may wish to
- consult Quarterdeck Technical Note #168, "QEMM's Stealth ROM
- Technology" (STLTECH.TEC") for background information on
- Stealth ROM and how it works.
-
- Q. I have a ROM that is not being turned in High RAM by
- Stealth ROM. Why?
-
- A. QEMM's Stealth ROM feature relocates ROMs which are accessed
- through the use of interrupts. A ROM that is not Stealthed may
- still have regions that are never used during the system's
- normal operation. Some disk ROMs, video ROMs, and devices that
- only use their ROMs during bootup (before the CONFIG.SYS is
- loaded) fit into this category. You may be able to get more
- High RAM by INCLUDING these unused regions on the QEMM386.SYS
- device driver line in CONFIG.SYS. To find out what addresses
- you can include, run the Analysis procedure, then use the
- INCLUDE parameter to include these addresses. Refer to your
- QEMM manual for further information on Analysis.
-
- Q. What is FASTINT10:N?
-
- A. When Stealthing a video ROM, QEMM replaces some of the video
- ROM's routines with code written by Quarterdeck. This
- replacement code is suitable for almost all video cards. The
- FASTINT10:N parameter (which may be abbreviated F10:N) tells
- QEMM not to use its code but the code of the video ROM instead.
- This in no way limits the amount of High RAM Stealth ROM
- creates and may be an acceptable solution for those users who
- need it. It should only be necessary on unusual video cards. If
- placing the page frame at the beginning of the video card's ROM
- works or if a small regular exclude also solves the problem you
- may choose to use F10:N instead.
-
- Q. What is FSTC?
-
- A. In addition to program code, ROMs contain various tables of
- information. A ROM may itself access these tables directly.
- When the ROM is being Stealthed normally, Stealth ROM will
- prevent direct access to the ROM by copying various tables into
- QEMM's own data area, which uses some extra memory -- usually
- in High RAM. When a ROM is being Stealthed but the address in
- which the ROM resides is EXCLUDEd (as with X=C000-C7FF), QEMM
- cleverly figures out that it does not need to make copies of
- these tables in its own data area. QEMM therefore saves memory
- by not making copies of the tables. However, if the copy is not
- made, portions of the ROM where these tables are stored will be
- accessed directly. This will cause Analysis to report that a
- portion of the address space is OK when EXCLUDED even though it
- would not be accessed directly were it not EXCLUDED.
-
- FSTC (which stands for ForceStealthTableCopy) makes the
- Analysis procedure accurate by forcing QEMM to make copies of
- these tables so that inappropriate EXCLUDEs are not
- recommended.
-
- Some system and video ROMs may not function properly with the
- FSTC parameter. If this is the case on your system you will
- have to perform the Analysis procedure without the FSTC
- parameter. However, you should be aware in this case that some
- of the EXCLUDE statements that Analysis prompts you to use may
- not be necessary. You can try reducing these EXCLUDES on a
- trial-and-error basis if you wish.
-
- FSTC should only be used when you are testing a portion of a
- ROM's address space for direct access by excluding the whole
- ROM. It is not an appropriate parameter for a final
- configuration.
-
- Q. What is FB:N?
-
- FB:N, short for FRAMEBUF:N, disables QEMM's feature of breaking
- up disk reads into the page frame and disk writes from the page
- frame. FB:Y is the default with Stealth ROM; FB:N is the
- default without Stealth ROM.
-
- Q. What is UFP:N?
-
- A. When Stealth ROM is active, and when no program is using
- expanded memory, QEMM unmaps the memory left in the page frame.
- This allows the ROM underneath the page frame to be visible, in
- case some program reads that ROM directly. However some
- programs use expanded memory and then free an EMS handle (which
- is tantamount to ceasing to use that expanded memory) and yet
- expect the page frame to contain the memory that they last
- mapped there. The UFP:N (abbreviation for UNMAPFREEPAGES)
- parameter tells QEMM not to unmap the EMS page, which will make
- such programs work with Stealth ROM. Of course such programs
- violate the EMS specification by abandoning the EMS handle (and
- apparently common sense) but expecting the page frame to
- contain the memory just released. UFP:N is the default without
- Stealth ROM.
-
- Q. What are advanced disk features? What is VHI:N?
-
- A. The BIOS has a set of function calls intended for use by
- multitasking programs. These are INT 15h, functions 90h and
- 91h. The system ROM or disk ROM may issue the INT 15h, Fn 90h
- call while it is waiting for the disk controller to read or
- write a sector, allowing other programs to execute during this
- wait. When the sector is ready, the disk interrupt handler
- issues an INT 15h, Fn 91h, signalling the multitasking program
- that the disk information is ready to be processed by the
- system or disk ROM.
-
- The "advanced features" of some disk caches hook this call to
- allow your system to go ahead and execute your current program
- while the system or disk ROM is waiting for its requested
- sector. Although such caches properly preserve the stack and
- register state for the BIOS and the application when doing this
- pseudo-multitasking, they do not preserve the mapping of the
- page frame. Therefore, if a BIOS call causes the page frame to
- be used (as is the case with Stealth ROM active), conflicts and
- system failures could result. Since most disk caches do not
- preserve the page frame properly, QEMM automatically suppresses
- INT 15h, Fn 90h calls from the BIOS, effectively disabling
- advanced disk features. Caches that save and restore the page
- frame when using advanced disk features can use a programming
- interface to QEMM to re-enable advanced disk features.
-
- You may defeat QEMM's defeating of this feature with the
- VIRTUALHDIRQ:N (VHI:N) parameter on the QEMM device line in
- your CONFIG.SYS file. If your cache uses INT 15h Fn 90h as one
- of its advanced features, and does not save and restore the
- page frame you will crash or corrupt data on the cached
- drive(s).
-
- Q. Can I load a driver that uses ROM before QEMM?
-
- A. You can load a device driver that uses a ROM before QEMM and
- still Stealth that ROM by loading the driver HOOKROM.SYS (found
- in your QEMM directory) before you load this driver. directory.
- Here is an example of a CONFIG.SYS file that loads HOOKROM,
- then a driver that uses a ROM, then QEMM with Stealth ROM
- enabled:
-
- DEVICE=C:\QEMM\HOOKROM.SYS
- DEVICE=C:\DISK\ROMDRIVER.SYS
- DEVICE=C:\QEMM\QEMM386.SYS RAM ST:M
-
- For a more detailed explanation of HOOKROM, refer to XSTI.TEC
- in your QEMM\TECHNOTE directory.
-
- Q. Why does my computer's BIOS Setup program fail when I use ST:M?
-
- A. Many machines have a built-in System Setup program in the BIOS
- ROM that can be popped up via a keystroke. Stealth ROM may make
- this feature inaccessible to you after your system has booted.
- Because the Setup program accesses the ROM directly, you must
- EXCLUDE the portion of address space where it is stored in
- order for it to work after QEMM has been loaded and Stealth ROM
- enabled. On most machines this Setup program is found in F000-
- F7FF.
-
- You may decide that you would rather have access to the Setup
- program ONLY on bootup and use this portion of the address
- space for High RAM. Since you must reboot your computer after
- making changes in your CMOS Setup anyway, most users consider
- this a fair trade.
-
- Q. How does Stealth ROM work? What can cause it to fail?
-
- A. Refer to consult Quarterdeck Technical Note #168, "QEMM's
- Stealth ROM Technology" (STLTECH.TEC") for background
- information on Stealth ROM and how it works and what can
- interfere with it.
-
- SUMMARY:
-
- The Stealth ROM technology has been exhaustively tested. Due to
- the wide variety of software and hardware in the PC world,
- however, Stealth ROM cannot be guaranteed to work with every
- configuration. The actual Stealthing of interrupts is very
- successful. Most failures are due to programs (or other ROMs)
- trying to access a portion of the ROM directly rather than by
- means of interrupt, and most of these failures can be resolved via
- the techniques in this note.
-
- If you experience a problem that you are unable to resolve using
- the steps outlined in this technical bulletin, Quarterdeck would
- very much like to hear about it.
-
- ******************************************************************
- * 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) 1995 Quarterdeck Corporation *
- ******************** E N D O F F I L E ***********************
-
-