home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / 4d24h20b.exe / 4DOS24H2.DOC < prev    next >
Text File  |  1993-05-02  |  16KB  |  366 lines

  1.                         4DOS  Critical Error Handler
  2.  
  3.                                 Version 2.00
  4.  
  5.                                      by
  6.  
  7.                                 Niels Jensen
  8.                               Copenhagen  1992
  9.  
  10.                          --------------------------
  11.  
  12.  
  13.    This file is the documentation of the 4DOS Critical Error Handler
  14.    (4DOS24H2.COM).
  15.  
  16.  
  17. Generel Rules
  18. ~~~~~~~~~~~~~
  19.    The program(s), the source code and this documentation file is given
  20.    free to the PUBLIC DOMAIN.  Hence nobody is allowed to charge any amount
  21.    of money for the files included in this package, and everybody can use
  22.    the programs without paying for it.  Feel free to modify the code to fit
  23.    your own needs but please don't put my name under a modified version if
  24.    redistributed.
  25.  
  26.  
  27. Disclaimer
  28. ~~~~~~~~~~
  29.    Usage of 4DOS24H1.COM or 4DOS24H2.COM is done fully at your own risk and
  30.    I am not to be held responsible for any kind of damage caused by using
  31.    any of the programs in this archive.
  32.  
  33.  
  34. Contents of this documentation
  35. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36.    Contents of the Archive      - A list of the files included in the
  37.                                   arhive with a short description of each
  38.    About This Documentation     - Things concerning how this documentation
  39.                                   is written
  40.    About 4DOS24H2               - A short introduction
  41.    Highlights                   - A list of the most important features
  42.    Installation                 - How to install the critical error handler
  43.    Usage                        - How to operate 4DOS24H2
  44.    Unloading                    - How to unload 4DOS24H2
  45.    Trouble Shooting             - Look here if you encounter problems with
  46.                                   4DOS24H2
  47.  
  48.  
  49. Contents of the archive
  50. ~~~~~~~~~~~~~~~~~~~~~~~
  51.    Originally the archive includes the following files:
  52.  
  53.        4DOS24H2.COM     - The new critical error handler.
  54.        4DOS24H2.ASM     - Assembler source code for 4DOS24H2.COM.
  55.        4DOS24H2.DOC     - This documentation file.
  56.        4DOS24H1.COM     - A special version of the handler which uses only
  57.                           40 columns across the screen.  This is necessary
  58.                           if you use any of the old standard 40 columns
  59.                           text modes and you don't want your display
  60.                           garbled.
  61.        README           - This file contains a short description of the
  62.                           program and a quick-installation guide.  Also
  63.                           any last minute information which could not be
  64.                           integrated in this documentation file can be
  65.                           found here.
  66.  
  67.  
  68. About this documentation
  69. ~~~~~~~~~~~~~~~~~~~~~~~~
  70.    When refering to the handler in the text the name "4DOS24H2" is used to
  71.    mean "either 4DOS24H1 or 4DOS24H2."  The functionality of the programs
  72.    are identical and both will be treated alike.  The only difference is
  73.    the number of character columns used in their pop-up message windows
  74.    when a critical error occurs.  4DOS24H1 uses only 40 character columns
  75.    while 4DOS24H2 uses 41 columns to show the message window.
  76.  
  77.  
  78. About 4DOS24H2
  79. ~~~~~~~~~~~~~~
  80.    4DOS24H2.COM is a critical error handler to replace the one build into
  81.    the otherwise excellent 4DOS command interpreter.  The critical error
  82.    handler is the piece of code displaying the notorious "Abort, Retry,
  83.    Ignore" message when you have forgotten to put a disk in the disk drive.
  84.    Due to the nice behaviour of 4DOS it is possible to replace this piece
  85.    of code with an external handler.  This is not possible when using
  86.    COMMAND.COM and therefore this program will not work with COMMAND.COM.
  87.  
  88.    More specifically 4DOS24H2.COM is a RAM-resident routine that remains in
  89.    the computers storage until you either reboot your computer or turn off
  90.    the power (see also the TECHNICAL DETAILS in the README file).  It is
  91.    written purely in assembler for maximum efficiency and is optimized for
  92.    space efficiency (speed isn't very crucial in this context!).  The
  93.    source code is included in 4DOS24H2.ASM and can be modified and
  94.    reassembled to satisfy individual needs.
  95.  
  96.  
  97.    A Special Thanks...
  98.  
  99.    This program is written on the basis of Patrick Philippot's excellent
  100.    4DOS24H released to the public domain in 1990.  A special thanks
  101.    therefore goes to Patrick Philippot for the original idea, source code
  102.    and program.  Without the inspiration and basis from this work it would
  103.    have been impossible to write 4DOS24H2.
  104.  
  105.  
  106. Highlights
  107. ~~~~~~~~~~
  108.    *  Gives a clear explanation of the error, it's locus and type
  109.       and shows how to react.
  110.  
  111.    *  Restores the screen after an error.
  112.  
  113.    *  Handles all standard text modes.
  114.  
  115.    *  Handles extended text modes as well (e.g. Tseng ET4000 132x44
  116.       character mode).
  117.  
  118.    *  Written in assembler and optimized to use minimum amount of
  119.       memory.
  120.  
  121.    *  Can be loaded high using 4DOS version 4.00 or later.
  122.  
  123.    *  Source code with comments included.
  124.  
  125.  
  126. Installation
  127. ~~~~~~~~~~~~
  128.    To install the handler you just need to run 4DOS24H2.COM by putting
  129.    the following line in your 4START.BTM (or 4START.BAT) file:
  130.  
  131.       [d:path]4DOS24H2.COM
  132.  
  133.    were [d:path] is the (optional) drive and path to the directory in which
  134.    4DOS24H2 resides.  Drive and path can be omitted only if you keep
  135.    4DOS24H2 in the root directory of your boot drive.  If you don't have a
  136.    4START file consult your 4DOS documentation for details about how to
  137.    create one.  Remember to replace 4DOS24H2 with the actual version of the
  138.    handler (4DOS24H1.COM or 4DOS24H2.COM).
  139.  
  140.    If you are using 4DOS version 4.0 or later and DOS 5.0 or later you can
  141.    load 4DOS24H2 into high memory (provided you have enough free memory of
  142.    this type) by using the following lines in 4START.BTM:
  143.  
  144.  
  145.       IFF "%_SHELL"=="0" THEN
  146.          LOADHIGH  [d:path]4DOS24H2.COM
  147.       ELSE
  148.          [d:path]4DOS24H2.COM
  149.       ENDIFF
  150.  
  151.  
  152.    If you have 4DOS version 3.x or earlier it is not possible to load
  153.    4DOS24H2.COM high (well, I haven't found a safe way of doing it yet!).
  154.  
  155.    If you are using 4DOS version 4.0 or later and a DOS version prior to
  156.    DOS 5.0 it should still be possible to load 4DOS24H2 high using a memory
  157.    manager capable of doing this (QEMM, 386Max etc.).  In that case you
  158.    just need to replace the LOADHIGH command with the equivalent command
  159.    supported by the memory manager.
  160.  
  161.  
  162.    IMPORTANT !
  163.  
  164.    Do NOT run this program from AUTOEXEC.BAT.  If you load 4DOS24H2.COM
  165.    from AUTOEXEC.BAT you will not benefit from the handler during shells
  166.    (when you start a new copy of the 4DOS command interpreter).  The 4DOS
  167.    command interpreter loads its own critical error handler every time a
  168.    new shell is started.  Hence 4DOS24H2.COM need to be reinstalled when
  169.    starting a new shell.  Because 4DOS executes 4START.BTM every time a new
  170.    command interpreter is started (including the first one) the
  171.    reinstallation can be done automatically from 4START.BTM.
  172.  
  173.    Note:  The handler does NOT actually load a new copy of itself in memory
  174.           but merely reinstalls the one already present without using any
  175.           additional memory.
  176.  
  177.  
  178. Usage
  179. ~~~~~
  180.    At best you will never see 4DOS24H2.  If 4DOS24H2 pops up a message
  181.    window you have a critical error.  The following are examples of (well
  182.    known) situations all leading to a critical error:
  183.  
  184.       - You forgot to insert a diskette or to close the diskette drive door
  185.         before selecting the diskette drive.  This is harmless and you can
  186.         recover by pressing the 'A' key to abort the operation (if you are
  187.         a 4DOS user!) or by inserting a diskette and/or close the drive
  188.         door before pressing the 'R' key to retry the operation.
  189.  
  190.       - Your diskette is damaged in some way.  This is often a *REAL*
  191.         critical error and can be difficult to recover from. You will
  192.         probably have to use a disk oriented tool to resque your data on
  193.         the diskette if possible at all.
  194.  
  195.       - Your printer is offline or out of paper when you try to print
  196.         something.  This is normally harmless and typically you can recover
  197.         by switching on the power or setting your printer online or by
  198.         inserting paper.
  199.  
  200.    There are more rare situations which will also lead to critical errors
  201.    but hopefully you will not see them too often.
  202.  
  203.    When a critical error occurs 4DOS24H2 will pop up a window showing the
  204.    following information:
  205.  
  206.  
  207.     +---------------- 4DOS Critical Error Handler -----------------+
  208.     |                        Version 2.00                          |
  209.     |                                                              |
  210.     |   A description of the error type (read or write error)      |
  211.     |   and where it occured (e.g. the drive letter or port).      |
  212.     |                                                              |
  213.     |   If possible a somewhat more specific error description.    |
  214.     |                                                              |
  215.     |   Which possibilities you have to react and how to respond.  |
  216.     |                                                              |
  217.     +--------------------------------------------------------------+
  218.  
  219.  
  220.    You may or may not have all of the four respond possibilities: Abort,
  221.    Retry, Ignore, Fail -- this depends on the kind of error.  Aborting will
  222.    normally stop the program/command that caused the error and return you
  223.    to the 4DOS command line.  Choosing to retry will repeat the operation
  224.    that caused the error and only if no errors occur this time the
  225.    program/command will continue normally.  Choosing ignore will let the
  226.    program/command continue as if no error ever occurred, while the fail
  227.    respond will try to inform the program/command that an error has
  228.    occurred.
  229.    
  230.    You can respond by pressing the first letter of the action, e.g. an 'a'
  231.    to (a)bort the current operation, an 'i' to (i)gnore the error, an 'r'
  232.    to (r)etry the operation and an 'f' to (f)ail the operation.  The actual
  233.    case of the letter is unimportant and will be ignored.
  234.  
  235.    As a special feature of 4DOS24H2 you can also press Esc, 'q', 'x' or ^C
  236.    (Ctrl-C) instead of 'a' to abort.  These keys are often used to quit or
  237.    exit other applications and for some users they seem more natural.
  238.    Likewise you can press Spacebar or Enter to retry the operation as an
  239.    alternative to 'r'.  There are no alternative keys for the Ignore
  240.    operation as I could not find any better than 'i'.  Any other keys will
  241.    be ignored by the handler.
  242.  
  243.    When the critical error situation is properly handled the original user
  244.    screen is restored upon exit.
  245.  
  246.  
  247. Unloading
  248. ~~~~~~~~~
  249.    If you for some reason should need to unload 4DOS24H2 you will either
  250.    have to reboot your computer or use the TSR utilities from TurboPower
  251.    Software (Public Domain package available on many BBS-systems) to remove
  252.    4DOS24H2.COM from memory.  To keep memory usage at a minimum this
  253.    feature is not implemented.
  254.  
  255.    Note:  If you want to remove the handler by rebooting your computer
  256.           remember to edit your 4START.BTM file and remove the line(s)
  257.           responsible for loading 4DOS24H2.COM or put a REM command in
  258.           front of it/them.  Otherwise the handler will be loaded before
  259.           you are given control.
  260.  
  261.  
  262. Trouble Shooting
  263. ~~~~~~~~~~~~~~~~
  264.    4DOS24H2 is very easy to install and use and should not cause trouble.
  265.    In some rare situations, however, you might experience a problem covered
  266.    in this section.
  267.  
  268.    More than one copy of 4DOS24H2 in memory ...
  269.  
  270.      If 4DOS24H2 seems to load a new copy of itself into memory every time
  271.      you make a shell (and thereby wasting useful memory) you may have
  272.      loaded a resident program (TSR) which interferes with 4DOS24H2. If you
  273.      can identify the TSR causing the trouble you can sometimes recover by
  274.      installing your TSR before 4DOS24H2 (e.g. in CONFIG.SYS using INSTALL
  275.      under DOS 4.0 or later).
  276.  
  277.      If this is not possible or does not seem to solve the problem you may
  278.      try to edit the source code and reassemble it.  The trouble might be
  279.      that for some purpose your TSR uses interrupt 61h.  4DOS24H2 itself
  280.      uses interrupt vector 61h to see if it is already installed and can
  281.      not identify itself in memory if this interrupt is hooked by some TSR
  282.      after installation of 4DOS24H2.  To solve the problem you can change
  283.      the vector used by 4DOS24H2 by editing the EQU directive in line 96 of
  284.      the source code:
  285.  
  286.          IDvector    EQU   61h
  287.  
  288.      to reflect another vector number.  Suitable numbers are vector numbers
  289.      between 60h and 66h which are user defineable interrupt vectors.
  290.      After editing you must reassemble according to the directives in the
  291.      source code.
  292.  
  293.  
  294.    4DOS24H2 seems to dissapear after a critical error ...
  295.  
  296.      When you have had a critical error and have recovered the next time
  297.      you may see the original critical error handler responding.  This
  298.      problem could be caused by two reasons.  Either you have started a new
  299.      shell and forgotten to reinstall 4DOS24H2 or you may be trying to load
  300.      4DOS24H2 high using 4DOS version 3.x.
  301.  
  302.      In the first case you may be loading 4DOS24H2 from AUTOEXEC.BAT or may
  303.      otherwise exclude 4DOS24H2 from reloading when a new shell is started.
  304.      Load 4DOS24H2 from 4START.BAT if you are not already doing this --
  305.      refer to the Installation section for the correct installation
  306.      procedure.
  307.  
  308.      If you are using 4DOS version 3.x you may be trying to load 4DOS24H2
  309.      high using something like:
  310.  
  311.         COMMAND /C LH 4DOS24H2.COM
  312.  
  313.      You must either upgrade 4DOS or use conventional memory in order to
  314.      keep the contact with 4DOS24H2.  Refer to the Installation section for
  315.      details about loading 4DOS24H2 into conventional memory.
  316.  
  317.  
  318.    "Divide overflow" error when loaded high ...
  319.  
  320.      If you get a "Divide overflow" error during a shell you may be trying
  321.      to reload 4DOS24H2 using the LOADHIGH command but without having
  322.      enough free high memory.  This is not a bug in 4DOS24H2 but the error
  323.      is sometimes reported by 4DOS.
  324.  
  325.      Normally this situation does not lead to an error since 4DOS auto-
  326.      matically uses conventional memory when no upper memory is available.
  327.      However, the problem occurs while the excellent public domain ANSI
  328.      driver NNANSI.COM version 9.92 by Tom Almy is loaded into high memory.
  329.      At the moment I do not know of any other programs causing the same
  330.      problems; neither do I know if this is a bug in the ANSI driver or in
  331.      4DOS version 4.01, rev. B which I used for testing 4DOS24H2 in high
  332.      memory.
  333.  
  334.      The solution is to load 4DOS24H2 high only when it is first installed.
  335.      Reloading (when shelling) should be done using conventional memory
  336.      only.  This can be accomplished by exploiting the special 4DOS
  337.      environment variable "%_SHELL" and use the IFF construction shown in
  338.      the Installation section.  Refer to this section for more information.
  339.  
  340.  
  341. Epilogue
  342. ~~~~~~~~
  343.    It took quite a long time to create 4DOS24H2 but the time spent was
  344.    really funny and certainly not wasted.  I learned the 8088 assembler and
  345.    some new tricks on how to optimize assembler code and somehow it became
  346.    an obsession to see how much the code could be squeezed.
  347.  
  348.    I don't think it is possible to "squeeze" the memory consumption of the
  349.    code much more than a few bytes but I would be happy to hear from every-
  350.    body who succeeds in optimizing the code further without losing its
  351.    features.
  352.  
  353.    You can reach me through Internet at the following adress:
  354.  
  355.         ehlig@ask.diku.dk
  356.  
  357.    Please use subject: 4DOS24H2
  358.  
  359.  
  360.  
  361.                                Enjoy and have fun
  362.  
  363.  
  364.                                   Niels Jensen,  Copenhagen  August 1992
  365.                                          (last revised May 1993)
  366.