Files
oldlinux-files/docs/interrupts/int-html/rb-4112.htm
2024-02-19 00:23:35 -05:00

293 lines
16 KiB
HTML

<HTML>
<HEAD>
<TITLE>Int 24
</TITLE>
<META NAME="Description" CONTENT="
Int 24 - DOS 1+ - CRITICAL ERROR HANDLER -
Notes: invoked when a critical (usually hardware) error is encountered by DOS
(see #02543); should never be called directly
when DOS terminates a program, it copies the previous value of the
INT 24 vector out of the PSP (see #01378) and into the interrupt
vector table
SeeAlso: INT 21/AH=95h,INT 21/AH=59h/BX=0000h,INT 21/AH=92hPTS-DOS
(Table 02543)
Values critical error handler is called with:
AH = type and processing flags (see #02544)
">
<META NAME="robots" CONTENT="none">
</HEAD>
<BODY BGCOLOR="#FFD0A0">
<center>
<h2>Int 24
</h2>
</center><p>
<table border=1 cellpadding=3 cellspacing=1>
<td>
<a href="rb-4111.htm" tppabs="http://www.ctyme.com/intr/rb-4111.htm">
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
<a href="rb-4113.htm" tppabs="http://www.ctyme.com/intr/rb-4113.htm">
<img src="ldown.gif" tppabs="http://graphics.ctyme.com/gif/ldown.gif" border=0 alt=Next></a>
<a href="javascript:if(confirm('http://www.ctyme.com/rbrown.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/rbrown.htm'" tppabs="http://www.ctyme.com/rbrown.htm">
<img src="lhome.gif" tppabs="http://graphics.ctyme.com/gif/lhome.gif" border=0 alt=Ralf Brown Page></a>
<td><a href="int.htm" tppabs="http://www.ctyme.com/intr/int.htm">Interrups</a></td>
<td><a href="cat.htm" tppabs="http://www.ctyme.com/intr/cat.htm">Categories</a></td>
<td><a href="alpha.htm" tppabs="http://www.ctyme.com/intr/alpha.htm">Contents</a></td>
</td></table><p>
<p><img src="rbline.gif" tppabs="http://graphics.ctyme.com/gif/rbline.gif" width="100%" alt="------"><p>
<h3><font color=#C00040>DOS 1+ - CRITICAL ERROR HANDLER</font></h3>
<p><b>Notes:</b>
Invoked when a critical (usually hardware) error is encountered by DOS
<a href="rb-4112.htm#Table2543" tppabs="http://www.ctyme.com/intr/rb-4112.htm#Table2543">(see #02543)</a>; should never be called directly.
When DOS terminates a program, it copies the previous value of the
INT 24 vector out of the PSP <a href="rb-2682.htm#Table1378" tppabs="http://www.ctyme.com/intr/rb-2682.htm#Table1378">(see #01378)</a> and into the interrupt
vector table
<p><b>See Also:</b>
<a href="rb-3270.htm" tppabs="http://www.ctyme.com/intr/rb-3270.htm">INT 21/AH=95h</a> - <a href="rb-3012.htm" tppabs="http://www.ctyme.com/intr/rb-3012.htm">INT 21/AH=59h/BX=0000h</a> - <a href="rb-3267.htm" tppabs="http://www.ctyme.com/intr/rb-3267.htm">INT 21/AH=92h"PTS-DOS"</a>
<PRE>
<p>
<a name=table2543></a>
(Table 02543)
Values critical error handler is called with:.
AH = type and processing flags <a href="rb-4112.htm#Table2544" tppabs="http://www.ctyme.com/intr/rb-4112.htm#Table2544">(see #02544)</a>.
AL = drive number if AH bit 7 clear.
BP:SI -> device driver header <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table0'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table0"></a>(see #01646 at INT 21/AH=52h)
(BP:[SI+4] bit 15 set if character device).
DI low byte contains error code if AH bit 7 set <a href="rb-4112.htm#Table2545" tppabs="http://www.ctyme.com/intr/rb-4112.htm#Table2545">(see #02545)</a>.
<p><b>STACK:</b><br>DWORD return address for INT 24 call
WORD flags pushed by INT 24
WORD original AX on entry to INT 21
WORD BX
WORD CX
WORD DX
WORD SI
WORD DI
WORD BP
WORD DS
WORD ES
DWORD return address for INT 21 call
WORD flags pushed by INT 21<br>
<p><b>Return:</b><br>AL = action code (see #02546)
SS,SP,DS,ES,BX,CX,DX preserved
</PRE>
<p><b>Notes:</b>
The only DOS calls the handler may make are INT 21/AH=01h-0Ch,30h,59h.
If the handler returns to the application by popping the stack, DOS
will be in an unstable state until the first call with AH > 0Ch.
For DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network
critical errors.
If IGNORE specified but not allowed, it is turned into FAIL.
If RETRY specified but not allowed, it is turned into FAIL.
If FAIL specified but not allowed, it is turned into ABORT.
(DOS 3.0+) if a critical error occurs inside the critical error
handler, the DOS call is automatically failed (AL set to 03h and
the INT 24 call skipped).
The initial critical error handler is located in the kernel and
always results in FAIL. However, by default it is replaced by
the critical error handler in the command interpreter when it
loads. This can be suppressed (e.g. for BBS systems) by loading
the primary DOS 3.00+ COMMAND.COM shell with the undocumented
option /F 'Fail'. This syntax is also supported with PTS/DOS 6.51+,
S/DOS 1.0+, and DR-OpenDOS 7.02+ (1997-11-13) COMMAND.COM, as well
as 4DOS.COM/NDOS.COM. OpenDOS 7.01+ COMMAND.COM (1997-03-21)
introduced this under /N, which is still supported by newer releases
(although it has a slightly different meaning now).
<p><b>BUG:</b>
DR DOS COMMAND.COM before 1998-05-07 caused incorrect error messages
to occur if the error code had a non-zero MSB (e.g. NWCDEX's
"IO error reading from device" instead of the correct
"not ready error"). This was fixed with the DR-OpenDOS 7.03
COMMAND.COM now passing the full error code to any critical error
handlers.
<PRE>
<p>
Bitfields for critical error type and processing flags:
<a name=table2544></a>
Bit(s) Description (Table 02544)
7 class.
=0 disk I/O error.
=1 -- if block device, bad FAT image in memory
-- if char device, error code in DI
6 unused
5 Ignore allowed (DOS 3.0+)
4 Retry allowed (DOS 3.0+)
3 Fail allowed (DOS 3.0+)
2-1 disk area of error.
00 = DOS area 01 = FAT.
10 = root dir 11 = data area
0 set if write, clear if read
</PRE>
<p><b>Note:</b>
Abort is always allowed
<p><b>See Also:</b>
#02545 - #02546
<PRE>
<p>
<a name=table2545></a>
(Table 02545)
Values for critical error code:
00h (0) write-protection violation attempted
01h (1) unknown unit for driver
02h (2) drive not ready
03h (3) unknown command given to driver
04h (4) data error (bad CRC)
05h (5) bad device driver request structure length
06h (6) seek error
07h (7) unknown media type (non-DOS disk)
08h (8) sector not found
09h (9) printer out of paper
0Ah (10) write fault
0Bh (11) read fault
0Ch (12) general failure
0Dh (13) (DOS 3.0+, "multitasking" DOS, PTS-DOS & S/DOS) sharing violation
0Eh (14) (DOS 3.0+) lock violation
0Fh (15) invalid disk change / wrong disk
10h (16) (DOS 3.0+) FCB unavailable
10h (16) uncertain media
11h (17) (DOS 3.0+) sharing buffer overflow
11h (17) character call interrupted
12h (18) (DOS 4.0+) code page mismatch
13h (19) (DOS 4.0+) out of input
14h (20) (DOS 4.0+) insufficient disk space
</PRE>
<p><b>Note:</b>
Critical error codes 00h..0Ch are the traditional codes reported
through INT 24. These code assignments are mapped to error codes
13h..1Fh reported by INT21/AH=59h <a href="rb-3012.htm#Table1680" tppabs="http://www.ctyme.com/intr/rb-3012.htm#Table1680">(see #01680)</a>. Similarly, the
DOS 3.x critical error codes 0Dh..11h are mapped to INT21/AH=59h
error codes 20h..24h, however, the DOS 4.0+ critical error codes are
not mapped.
<p><b>BUG:</b>
Paragon Technology Systems' S/DOS 1.0 sources (a stripped down issue
of PTS-DOS 6.51 with sources on CD) erroneously list DOS INT 24
error codes 12h..14h as 11h..13h, however, since the sources do not
make use of these defines, this seems to be only a documentation
error.
<p><b>See Also:</b>
#02544 - #02546 - #01680
<PRE>
<p>
<a name=table2546></a>
(Table 02546)
Values for critical error handler action code:
00h ignore error and continue processing request
01h retry operation
02h terminate program as though INT 21/AH=4Ch called (INT 20h for DOS 1.x)
03h fail system call in progress (DOS 3+)
</PRE>
<p><b>See Also:</b>
#02544 - #02546
<p>
<b>Category: <a href="cat-010.htm" tppabs="http://www.ctyme.com/intr/cat-010.htm">
DOS Kernel</a>
- <a href="int-24.htm" tppabs="http://www.ctyme.com/intr/int-24.htm">
Int 24h</a>
- <a href="alpha-d.htm" tppabs="http://www.ctyme.com/intr/alpha-d.htm">
D</a>
</b><p><p><img src="rbline.gif" tppabs="http://graphics.ctyme.com/gif/rbline.gif" width="100%" alt="------"><p>
<table border=1 cellpadding=3 cellspacing=1>
<td>
<a href="rb-4111.htm" tppabs="http://www.ctyme.com/intr/rb-4111.htm">
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
<a href="rb-4113.htm" tppabs="http://www.ctyme.com/intr/rb-4113.htm">
<img src="ldown.gif" tppabs="http://graphics.ctyme.com/gif/ldown.gif" border=0 alt=Next></a>
<a href="javascript:if(confirm('http://www.ctyme.com/rbrown.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/rbrown.htm'" tppabs="http://www.ctyme.com/rbrown.htm">
<img src="lhome.gif" tppabs="http://graphics.ctyme.com/gif/lhome.gif" border=0 alt=Ralf Brown Page></a>
<td><a href="int.htm" tppabs="http://www.ctyme.com/intr/int.htm">Interrups</a></td>
<td><a href="cat.htm" tppabs="http://www.ctyme.com/intr/cat.htm">Categories</a></td>
<td><a href="alpha.htm" tppabs="http://www.ctyme.com/intr/alpha.htm">Contents</a></td>
</td></table><p>
<!-- Bottom Link Start -->
<center>
<p><table border=1 bgcolor="#ffff99"><tr><td>
<table border=0 height=80>
<tr align=center><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/sponsor.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/sponsor.htm'" tppabs="http://www.ctyme.com/sponsor.htm">
<img src="tip.gif" tppabs="http://graphics.ctyme.com/gif/tip.gif" ALT="Sponsors" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/sponsor.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/sponsor.htm'" tppabs="http://www.ctyme.com/sponsor.htm">Shopping</a>
</td><td width="65">
<a href="javascript:if(confirm('http://talk.ctyme.com/webx.cgi?13@@.ee6b2be \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://talk.ctyme.com/webx.cgi?13@@.ee6b2be'" tppabs="http://talk.ctyme.com/webx.cgi?13@@.ee6b2be">
<img src="comment.gif" tppabs="http://graphics.ctyme.com/gif/comment.gif" ALT="Forum" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://talk.ctyme.com/webx.cgi?13@@.ee6b2be \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://talk.ctyme.com/webx.cgi?13@@.ee6b2be'" tppabs="http://talk.ctyme.com/webx.cgi?13@@.ee6b2be">Forum</a>
</td><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/mail.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/mail.htm'" tppabs="http://www.ctyme.com/mail.htm">
<img src="mail.gif" tppabs="http://graphics.ctyme.com/gif/mail.gif" ALT="email" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/mail.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/mail.htm'" tppabs="http://www.ctyme.com/mail.htm">EMail</a>
</td><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/map.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/map.htm'" tppabs="http://www.ctyme.com/map.htm">
<img src="toc.gif" tppabs="http://graphics.ctyme.com/gif/toc.gif" ALT="Index" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/map.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/map.htm'" tppabs="http://www.ctyme.com/map.htm">Index</a>
</td><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/'" tppabs="http://www.ctyme.com/">
<img src="home.gif" tppabs="http://graphics.ctyme.com/gif/home.gif" ALT="Home" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/'" tppabs="http://www.ctyme.com/">Home</a>
</td><td width="90">
<center>
<FORM ACTION="https://secure.paypal.com/cgi-bin/webscr" tppabs="https://secure.paypal.com/cgi-bin/webscr" METHOD="POST" traget="_blank">
<INPUT TYPE="hidden" NAME="cmd" VALUE="_xclick">
<INPUT TYPE="hidden" NAME="business" VALUE="marc@perkel.com">
<INPUT TYPE="hidden" NAME="return" VALUE="http://www.perkel.com">
<INPUT TYPE="hidden" NAME="item_name" VALUE="Donation To Support this Site">
<INPUT TYPE="hidden" NAME="no_intl" VALUE="1">
<INPUT TYPE="image" SRC="x-click-but7.gif" tppabs="http://images.paypal.com/images/x-click-but7.gif" vspace=9
NAME="submit" ALT="Make payments with PayPal - it's fast, free and secure!">
</FORM>
</td></tr></table></td></tr></table><p>
<center>
<p>
<a href="javascript:if(confirm('http://www.ctyme.com/hosting/index.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/hosting/index.htm'" tppabs="http://www.ctyme.com/hosting/index.htm" target="_blank">
<img src="ctymehost.gif" tppabs="http://graphics.ctyme.com/gif/ctymehost.gif"
border=3 height=60 width=468></a>
<p>
<!-- Ad End --->
</center>
<FORM ACTION="http://service.bfast.com/bfast/click" target="_blank">
<INPUT TYPE="hidden" NAME="siteid" VALUE="30472466" >
<INPUT TYPE="hidden" NAME="bfpage" VALUE="horizontal">
<INPUT TYPE="hidden" NAME="bfmid" VALUE="27253343" >
<INPUT TYPE="hidden" NAME="num" VALUE="30">
<table bgcolor=white border=3><tr><td>
<table bgcolor=white border=0>
<tr><td>
<IMG SRC="serve-bfmid=27253343&siteid=30472466&bfpage=horizontal.gif" tppabs="http://service.bfast.com/bfast/serve?bfmid=27253343&siteid=30472466&bfpage=horizontal" BORDER="0" WIDTH="1" HEIGHT="1" align=right NOSAVE >
<center><b>Search the web with Google</b></center>
</td></tr><tr><td>
<TABLE cellpadding=0 cellspacing=5 bgcolor="#FFFFFF">
<tr><td bgcolor="#0000cc"><IMG SRC="cleardot.gif" tppabs="http://www.google.com/images/cleardot.gif" height=1 border="0" ALT="Google"></td></tr><tr><td>
<IMG SRC="affiliate_logo.gif" tppabs="http://www.google.com/affiliates/affiliate_logo.gif" border="0" ALT="Google" align="center">
<INPUT TYPE=text name=q size=30 maxlength=255 value="">
<INPUT type=submit name=sa VALUE="Go">
</td></tr>
<tr><td bgcolor="#0000cc"><IMG SRC="cleardot.gif" tppabs="http://www.google.com/images/cleardot.gif" height=1 border="0" ALT="Google"></td></tr></TABLE>
</td></tr></table>
</tr></td></table>
</FORM>
</center>
<p><img src="rbline.gif" tppabs="http://graphics.ctyme.com/gif/rbline.gif" width="100%" alt="------"><p>
<!-- Bottom Link End -->
</BODY>
</HTML>