302 lines
19 KiB
HTML
302 lines
19 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>Int 09
|
|
</TITLE>
|
|
<META NAME="Description" CONTENT="
|
|
Int 09 - IRQ1 - KEYBOARD DATA READY -
|
|
Desc: this interrupt is generated when data is received from the keyboard.
|
|
This is normally a scan code (from either a keypress *or* a key
|
|
release), but may also be an ACK or NAK of a command on AT-class
|
|
keyboards.
|
|
Notes: this IRQ may be masked by setting bit 1 on I/O port 21h
|
|
if the BIOS supports an enhanced (101/102-key) keyboard, it calls
|
|
INT 15/AH=4Fh after reading the scan code (see #00006) from the
|
|
keyboard and before further processing; all further processing uses
|
|
the scan code returned from INT 15/AH=4Fh
|
|
the default interrupt handler is at F000h:E987h in 100%-compatible
|
|
">
|
|
<META NAME="robots" CONTENT="none">
|
|
</HEAD>
|
|
<BODY BGCOLOR="#FFD0A0">
|
|
<center>
|
|
<h2>Int 09
|
|
</h2>
|
|
</center><p>
|
|
<table border=1 cellpadding=3 cellspacing=1>
|
|
<td>
|
|
<a href="rb-0044.htm" tppabs="http://www.ctyme.com/intr/rb-0044.htm">
|
|
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
|
|
<a href="rb-0046.htm" tppabs="http://www.ctyme.com/intr/rb-0046.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>IRQ1 - KEYBOARD DATA READY</font></h3>
|
|
<p><b>Desc:</b>
|
|
This interrupt is generated when data is received from the keyboard.
|
|
This is normally a scan code (from either a keypress *or* a key
|
|
release), but may also be an ACK or NAK of a command on AT-class
|
|
keyboards.
|
|
<p><b>Notes:</b>
|
|
This IRQ may be masked by setting bit 1 on I/O port 21h.
|
|
If the BIOS supports an enhanced (101/102-key) keyboard, it calls
|
|
INT 15/AH=4Fh after reading the scan code <a href="rb-0045.htm#Table6" tppabs="http://www.ctyme.com/intr/rb-0045.htm#Table6">(see #00006)</a> from the
|
|
keyboard and before further processing; all further processing uses
|
|
the scan code returned from INT 15/AH=4Fh.
|
|
The default interrupt handler is at F000h:E987h in 100%-compatible
|
|
BIOSes.
|
|
The interrupt handler performs the following actions for certain
|
|
special keystrokes:
|
|
Ctrl-Break clear keyboard buffer, place word 0000h in buffer,
|
|
invoke INT 1B, and set flag at 0040h:0071h
|
|
SysReq invoke INT 15/AH=85h (SysReq is often labeled SysRq)
|
|
Ctrl-Numlock place system in a tight wait loop until next INT 09
|
|
Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
|
|
destination of the jump at that address)
|
|
Shift-PrtSc invoke INT 05
|
|
Ctrl-Alt-Plus (HP Vectra) enable keyclick
|
|
Ctrl-Alt-Plus (many clones) set clock speed to high
|
|
Ctrl-Alt-Minus (HP Vectra) reduce keyclick volume
|
|
Ctrl-Alt-Minus (many clones) set clock speed to low
|
|
Ctrl-Alt-SysReq (HP Vectra) generate hard reset
|
|
Ctrl-Alt-S (many clones) run BIOS setup program
|
|
Ctrl-Alt-Esc (many clones) run BIOS setup program
|
|
Ctrl-Alt-Ins (many clones) run BIOS setup program
|
|
Ctrl-Alt-LeftShift-GrayMinus (some clones) turn off system cache
|
|
Ctrl-Alt-LeftShift-GrayPlus (some clones) turn on system cache.
|
|
DR DOS hooks this interrupt to control the cursor shape (underscore/
|
|
half block) for overwrite/insert mode.
|
|
DR Multiuser DOS hooks this interrupt for cursor shape control and to
|
|
control whether Ctrl-Alt-Del reboots the current session or the
|
|
entire system
|
|
<p><b>See Also:</b>
|
|
<a href="rb-0033.htm" tppabs="http://www.ctyme.com/intr/rb-0033.htm">INT 05"PRINT SCREEN"</a> - <a href="rb-0054.htm" tppabs="http://www.ctyme.com/intr/rb-0054.htm">INT 0B"HP 95LX"</a> - <a href="rb-1387.htm" tppabs="http://www.ctyme.com/intr/rb-1387.htm">INT 15/AH=4Fh</a> - <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb \n\nThis file was not retrieved by Teleport Pro, because the server reports that this file cannot be found. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb'" tppabs="http://www.ctyme.com/intr/rb"
|
|
<p><b>See Also:</b>
|
|
<a href="rb-1754.htm" tppabs="http://www.ctyme.com/intr/rb-1754.htm">INT 16/AH=00h</a> - <a href="rb-1771.htm" tppabs="http://www.ctyme.com/intr/rb-1771.htm">INT 16/AH=10h</a> - <a href="rb-2442.htm" tppabs="http://www.ctyme.com/intr/rb-2442.htm">INT 1B</a> - <a href="rb-5117.htm" tppabs="http://www.ctyme.com/intr/rb-5117.htm">INT 2F
|
|
<p><b>See Also:</b>
|
|
<a href="int-51.htm" tppabs="http://www.ctyme.com/intr/int-51.htm">INT 51</a>"DESQview" - <a href="rb-6368.htm" tppabs="http://www.ctyme.com/intr/rb-6368.htm">INT 59"DoubleDOS"</a> - <a href="rb-7831.htm" tppabs="http://www.ctyme.com/intr/rb-7831.htm">INT 79"GO32"</a>
|
|
<PRE>
|
|
<p>
|
|
<a name=table6></a>
|
|
(Table 00006)
|
|
Values for keyboard make/break (scan) code:
|
|
01h Esc 31h N
|
|
02h 1 ! 32h M
|
|
03h 2 @ 33h , < 63h F16
|
|
04h 3 # 34h . > 64h F17
|
|
05h 4 $ 35h / ? 65h F18
|
|
06h 5 % 36h Right Shift 66h F19
|
|
07h 6 ^ 37h Grey* 67h F20
|
|
08h 7 & 38h Alt 68h F21 (Fn) [*]
|
|
09h 8 * 39h SpaceBar 69h F22
|
|
0Ah 9 ( 3Ah CapsLock 6Ah F23
|
|
0Bh 0 ) 3Bh F1 6Bh F24
|
|
0Ch - _ 3Ch F2 6Ch --
|
|
0Dh = + 3Dh F3 6Dh EraseEOF
|
|
0Eh Backspace 3Eh F4
|
|
0Fh Tab 3Fh F5 6Fh Copy/Play
|
|
10h Q 40h F6
|
|
11h W 41h F7
|
|
12h E 42h F8 72h CrSel
|
|
13h R 43h F9 73h <delta> [*]
|
|
14h T 44h F10 74h ExSel
|
|
15h Y 45h NumLock 75h --
|
|
16h U 46h ScrollLock 76h Clear
|
|
17h I 47h Home 77h [Note2] Joyst But1
|
|
18h O 48h UpArrow 78h [Note2] Joyst But2
|
|
19h P 49h PgUp 79h [Note2] Joyst Right
|
|
1Ah [ { 4Ah Grey- 7Ah [Note2] Joyst Left
|
|
1Bh ] } 4Bh LeftArrow 7Bh [Note2] Joyst Up
|
|
1Ch Enter 4Ch Keypad 5 7Ch [Note2] Joyst Down
|
|
1Dh Ctrl 4Dh RightArrow 7Dh [Note2] right mouse
|
|
1Eh A 4Eh Grey+ 7Eh [Note2] left mouse
|
|
1Fh S 4Fh End
|
|
20h D 50h DownArrow
|
|
21h F 51h PgDn
|
|
22h G 52h Ins
|
|
23h H 53h Del
|
|
24h J 54h SysReq ---non-key codes---
|
|
25h K 55h [Note1] F11 00h kbd buffer full
|
|
26h L 56h left \| (102-key)
|
|
<p><b>27h ; :</b><br>57h F11 AAh self-test complete
|
|
28h ' " 58h F12 E0h prefix code
|
|
29h ` ~ 59h [Note1] F15 E1h prefix code
|
|
2Ah Left Shift 5Ah PA1 EEh ECHO
|
|
2Bh \ | 5Bh F13 (LWin) F0h prefix code (key break)
|
|
2Ch Z 5Ch F14 (RWin) FAh ACK
|
|
2Dh X 5Dh F15 (Menu) FCh diag failure (MF-kbd)
|
|
2Eh C FDh diag failure (AT-kbd)
|
|
2Fh V FEh RESEND
|
|
30h B FFh kbd error/buffer full
|
|
</PRE>
|
|
<p><b>Notes:</b>
|
|
Scan codes 56h-E1h are only available on the extended (101/102-key)
|
|
keyboard and Host Connected (122-key) keyboard; scan codes 5Bh-5Dh
|
|
are only available on the 122-key keyboard and the Microsoft Natural
|
|
Keyboard; scan codes 5Eh-76h are only available on the 122-key
|
|
keyboard.
|
|
In the default configuration, break codes are the make scan codes with
|
|
the high bit set; make codes 60h,61h,70h, etc. are not available
|
|
because the corresponding break codes conflict with prefix codes
|
|
(code 2Ah is available because the self-test result code AAh is only
|
|
sent on keyboard initialization). An alternate keyboard
|
|
configuration can be enabled on AT and later systems with enhanced
|
|
keyboards, in which break codes are the same as make codes, but
|
|
prefixed with an F0h scan code.
|
|
Prefix code E0h indicates that the following make/break code is for a
|
|
"gray" duplicate to a key which existed on the original PC keyboard;
|
|
prefix code E1h indicates that the following make code has no
|
|
corresponding break code (currently only the Pause key generates no
|
|
break code).
|
|
The Microsoft Natural Keyboard sends make codes 5Bh, 5Ch, and 5Dh
|
|
(all with an E0h prefix) for the Left Windows, Right Windows, and
|
|
Menu keys on the bottom row.
|
|
The European "Cherry G81-3000 SAx/04" keyboard contains contacts for
|
|
four additional keys, which can be made available by a user
|
|
modification; the three new keys located directly below the cursor
|
|
pad's Delete, End, and PgDn keys send make codes 66h-68h (F19-F21);
|
|
the fourth new key, named <delta>, sends make code 73h.
|
|
The SysReq key is often labeled SysRq.
|
|
The "Accord" ergonomic keyboard with optional touchpad (no other
|
|
identification visible on keyboard or in owner's booklet) has an
|
|
additional key above the Grey- key marked with a left-pointing
|
|
triangle and labeled "Fn" in the owner's booklet which returns
|
|
scan codes E0h 68h on make and E0h E8h on break.
|
|
The "Preh Commander AT" keyboard with additional F11-F22 keys treats
|
|
F11-F20 as Shift-F1..Shift-F10 and F21/F22 as Ctrl-F1/Ctrl-F2; the
|
|
Eagle PC-2 keyboard with F11-F24 keys treated those additional keys
|
|
in the same way.
|
|
[Note1] the "Cherry G80-0777" keyboard has additional F11-F15 keys
|
|
which generate make codes 55h-59h; some other extended keyboards
|
|
generate codes 55h and 56h for F11 and F12, which cannot be managed
|
|
by standard DOS keyboard drivers.
|
|
[Note2] the Schneider/Amstrad PC1512 PC keyboards contain extra keys,
|
|
a mouse, and a digital joystick, which are handled like extra keys.
|
|
The joystick's motion scancodes are converted into standard arrow
|
|
keys by the BIOS, and the joystick and mouse button scan codes are
|
|
converted to FFFFh codes in the BIOS keyboard buffer
|
|
(see CMOS 15h"AMSTRAD").
|
|
In addition to the keys listed in the table above, there are
|
|
Del-> (delete forward) 70h
|
|
Enter 74h
|
|
<p><b>See Also:</b>
|
|
#00602 at INT 16/AX=6F07h - #03214 at INT 4A/AH=05h
|
|
<p>
|
|
<b>Category: <a href="cat-019.htm" tppabs="http://www.ctyme.com/intr/cat-019.htm">
|
|
Hardware</a>
|
|
- <a href="int-09.htm" tppabs="http://www.ctyme.com/intr/int-09.htm">
|
|
Int 09h</a>
|
|
- <a href="alpha-i.htm" tppabs="http://www.ctyme.com/intr/alpha-i.htm">
|
|
I</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-0044.htm" tppabs="http://www.ctyme.com/intr/rb-0044.htm">
|
|
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
|
|
<a href="rb-0046.htm" tppabs="http://www.ctyme.com/intr/rb-0046.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>
|