Metropoli BBS
VIEWER: fatal.doc MODE: TEXT (CP437)
                              F A T A L
                   Resident Critical Error Handler

                             FATAL14.ZIP
                            v1.4 04-22-90

                 Copyright 1989, 1990 Samuel H. Smith
                          All rights reserved.


This program is a resident (TSR) utility that traps critical errors and
attempts to handle them in an intelligent way.  It replaces the normal
"Retry, Ignore, Abort" prompt.  The program automatically attempts to
retry failed operations when you are not there to press the "R" key.

It draws on all available information to present a complete error
description to the user.  If the operator does not respond within 10
seconds the program will automatically take the action suggested by DOS.

DOS version 3.0 or later is required to use this program.
Once resident, FATAL used about 3800 bytes of RAM.


Usage:
   FATAL/I     ;install FATAL in memory.

   FATAL/U     ;un-install, remove FATAL from memory.

   FATAL/C     ;display critical error counters.

   FATAL/Z     ;reset error counters to zero.


The FATAL program will take over critical errors that are not directly
handled in a later program.  It is careful to preserve any replacement
error handler used by an application program.  Because of this, it is
advised to load FATAL as an early TSR, before any others that also set
up critical error handlers.  In multi-tasking systems you may need to
load a copy of FATAL into each memory partition.

  NOTE: If you are running the LANtastic network, you must load FATAL
        *before* calls to SERVER and probably also before REDIR and
        LANBIOS. Otherwise a sharing violation will be trapped on the
        server rather than on the offending workstation!

Example output
--------------

FATAL/I
   FATAL v1.4 installed.

FATAL/U
   FATAL unInstalled.

FATAL/C
   FATAL v1.4 status:
      10 Critical errors.
       5 Automatic retries.
   Error:
       3 Seek error!
       6 Sharing violation!
       1 Network device no longer exists!
   Class:
       3 Hardware failure
       6 Resource locked
       1 Unknown
   Locus:
       1 Unknown.
       8 Block device (disk error).
       1 Network.
   Drive:
       2 I:
       6 J:
       2 U:
   Area:
       5 Directory area.
       5 Data area.
   Suggested action:
       3 Retry the operation.
       6 Delay and then retry.
       1 Re-enter input.


  ╔═══════════════════╡ CRITICAL ERROR! ╞════════════════════╗                  
  ║  Error: Drive not ready!                                 ║                  
  ║  Area:  Reading from drive A: File allocation table.     ║                  
  ║  Class: Hardware failure in Block device (disk error).   ║                  
  ║  Suggested action: Retry after correcting the error.     ║                  
  ╚══════════════════════════════════════════════════════════╝                  
     Action: (A)bort, (R)etry, (I)gnore, (F)ail? <R>

FATAL/Z
   Critical error counters zeroed.


                                   LICENSE
                                   =======

   SourceWare: What is it?
   -----------------------

   SourceWare is my name for a unique concept in user supported
   software.

   Programs distributed under the SourceWare concept always offer source
   code.

   This package can be freely distributed so long as it is not modified 
   or sold for profit.  If you find that this program is valuable, you
   can send me a donation for what you think it is worth.  I suggest
   about $10.

   Send your registrations to:        The Tool Shop BBS
      Samuel H. Smith                 (602) 264-3969 (2400) - Free node
      5119 N. 11th Ave., #332         (602) 279-2673 (HST 9600)
      Phoenix AZ 85013                (602) 279-0230 (HAYES 9600)


   Why SourceWare?
   ---------------
   Why do I offer source code?  Why isn't the donation manditory?  The
   value of good software should be self-evident.  The source code is
   the key to complete understanding of a program.  You can read it to
   find out how things are done.  You can also change it to suit your
   needs, so long as you do not distribute the modified version without
   my consent.


   Copyright
   ---------
   If you modify this program,  I would appreciate a copy of the new
   source code.  I am holding the copyright on the source code,  so
   please don't delete my name from the program files or from the
   documentation.


                                DISCLAIMER
                                ==========
   I make no warranty of any kind, express or implied, including without
   limitation, any warranties of merchantability and/or fitness for a
   particular purpose.  I shall not be liable for any damages, whether
   direct, indirect, special or consequential arising from a failure of
   this program to operate in the manner desired by the user.  I shall
   not be liable for any damage to data or property which may be caused
   directly or indirectly by the use of this program.

   IN NO EVENT WILL I BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING ANY
   LOST PROFITS,  LOST SAVINGS OR OTHER INCIDENTAL OR CONSEQUENTIAL
   DAMAGES ARISING OUT OF YOUR USE OR INABILITY TO USE THE PROGRAM, OR
   FOR ANY CLAIM BY ANY OTHER PARTY.



Revision History
----------------

7-20-89 v1.0
   Initial coding and release.


7-31-89 v1.1
   Changed all display code to use BIOS calls exclusively.  The initial
   version used the DOS function 9, but this caused problems when
   standard output was redirected: the FATAL messages were also
   redirected!

   Added screen save and restore operations; original user screen is now
   preserved after fatal error processing (text modes only).  BIOS calls
   are used for compatibility with all system types.

   Corrected an error that caused application program error handlers to
   be replaced.  FATAL is supposed to replace only the standard handler,
   leaving application error handlers in place.


8-2-89 v1.2
   Changed keyboard input functions to use BIOS calls rather than DOS
   calls.  This prevents a crash if standard input has been redirected
   from a file at the time a critical error takes place.

   Slight reduction in RAM requirement.

   FATAL now removes itself from memory if run a second time.  Please
   don't do this if you have any resident programs loaded after FATAL.

   Added /L command line option to bypass license messages.


8-14-89 v1.3
   Added internal counters for number of critical errors and number of
   automatic retries.  Each possible error message is counted for later
   reporting.

   New FATAL/C option produces a detailed report of all error counters.

   New FATAL/I option performs initial installation.

   New FATAL/U option un-installs fatal if possible.

   Fatal now hooks the DOS services interrupt in addition to the timer
   tick interrupt.  On very fast machines it was possible to miss a
   critical error during the first 55 miliseconds of program execution.


12-26-89 v1.4ß1
   Shortened automatic retry delay from 30 seconds to 10 seconds.

   New FATAL/Z option to zero all error counters.

   Added new logic to properly handle nested calls to COMMAND.COM and
   shells to COMMAND.COM from application programs.

   Improved the ability of FATAL/C to locate the resident portion, even
   when being called by an application that takes over the critical
   error interrupt.


03-29-90 v1.4ß2
   Added some additional error messages.

   Corrected "stray" character in prompt.

   Widened error display window to allow better formatting of longer
   error reports.

[ RETURN TO DIRECTORY ]