Files
2024-02-19 00:23:35 -05:00

118 lines
2.9 KiB
HTML
Raw Permalink Blame History

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text-html; charset=Windows-1252">
<title>INT 23 - Control-Break Exit Address</title>
<meta name="FORMATTER" content="Microsoft FrontPage 2.0">
</head>
<body>
<h1><a name="kap_interrupt_2820"></a>INT 23 - Control-Break Exit
Address</h1>
<p> no input data</p>
<p> - not an interrupt but a pointer to a routine that is called
when a</p>
<p> DOS function detects a ~Ctrl-Break~ or Ctrl-C has been
pressed</p>
<p> resulting in a &quot;Break condition&quot;</p>
<p> - a Break condition is detected if DOS's internal Break flag
is</p>
<p> found set by ~INT 1B~ or the next word in the BIOS keyboard
buffer</p>
<p> is a scan code representing one of the Break key
combinations.</p>
<p> If a matching scan code is found, the keyboard buffer head
pointer</p>
<p> is incremented by 2 (which effectively removes the ^C
keycode), the</p>
<p> ^C is printed and then INT 23 is called.</p>
<p> - disabling the abort is easy, but to disable the ^C from
appearing</p>
<p> you must either not use any of the DOS I/O functions that
check</p>
<p> for Break or you must trap the Ctrl-C keypress from within
INT 9.</p>
<p> Another method is to scan the BIOS keyboard buffer and delete
any</p>
<p> Break key combinations.</p>
<p> - Ctrl-Break empties the keyboard buffer by resetting the
keyboard</p>
<p> head and tail pointers then places a 0000h at the queue head.
It</p>
<p> then sets an internal &quot;Break&quot; flag. DOS
subfunctions that check</p>
<p> for Break see this and then issue INT 23h. DOS does not
detect</p>
<p> INT 1B using the keyboard buffer, but uses it's own internal
flag.</p>
<p> - Alt-Keypad-3 and Ctrl-2 also result in this interrupt</p>
<p> - Ctrl-C places 2E03h in the BIOS keyboard buffer while
Ctrl-2</p>
<p> places 0300h and Alt-Keypad-3 places 0003h; none of these key</p>
<p> combinations empty the keyboard like Ctrl-Break but all
result</p>
<p> in a ^C being displayed; note that all three produce scan
codes</p>
<p> containing '03'</p>
<p> - since DOS checks only the first word of the keyboard buffer</p>
<p> Ctrl-C, Ctrl-2 and Alt-Keypad-3 are only detected if they are
the</p>
<p> first word in the buffer while Ctrl-Break is detected via the</p>
<p> internal flag and takes effect as soon as it's detected.</p>
<p> - do not execute this interrupt directly</p>
<p> - see also ~INT 9~</p>
<hr>
<table border="0" width="100%" cols="3">
<tr>
<td width="33%">Zur<EFBFBD>ck zum <a href="inte1at0.htm">Interrupt
Info</a>. </td>
<td align="center" width="33%"><a
href="mailto:Roger.Morgan@htl-steyr.ac.at">Roger Morgan</a>
/ 1998 </td>
<td align="right" width="33%"><font size="1">L.<2E>nderung <!--webbot
bot="Timestamp" s-type="EDITED" s-format="%d.%m.%y"
startspan -->29.03.99<!--webbot bot="Timestamp" endspan
i-checksum="13964" --> </font></td>
</tr>
</table>
</body>
</html>