📄 interrup.d
字号:
Interrupt List, part 4 of 18
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
--------b-15E800-----------------------------
INT 15 - Compaq Contura - GET ???
AX = E800h
Return: AX = 0000h
BH = 00h
BL = ??? (read from port 0C7Ch)
CH = ???
CL = ???
DX = 0000h
Note: also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
--------b-15E800-----------------------------
INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
AX = E800h
BX = ??? (0000h)
Return: CF clear if successful
BH = 02h
BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
CF set on error
others???
Notes: used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
the Enhanced Parallel Port expected by that driver is available
used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
volume control hardware expected by that driver is available
--------b-15E800-----------------------------
INT 15 - Compaq Prolinea - GET ???
AX = E800h
BX = ??? (1369h)
Return: BH = 01h
BL = ???
others???
Note: used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
the fix that driver applies is required (will not install if BX on
return is other than 010Eh or 010Fh)
SeeAlso: AX=E802h
--------b-15E801-----------------------------
INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
AX = E801h
Return: CF clear if successful
AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
BX = extended memory above 16M, in 64K blocks
CX = configured memory 1M to 16M, in K
DX = configured memory above 16M, in 64K blocks
CF set on error
Notes: supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
BIOS
supported by AMI BIOSes dated 8/23/94 or later
on some systems, the BIOS returns AX=BX=0000h; in this case, use CX
and DX instead of AX and BX
this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
used as a fall-back by newer versions if AX=E820h is not supported
SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
--------b-15E802-----------------------------
INT 15 - Compaq Contura - GET ???
AX = E802h
Return: CF clear
AX = 0000h
BX = ???
CX = 0000h
Note: this function is also supported by the LTE Lite 25c, 25E, and 486; not
supported by LTE Lite 20 and 25.
SeeAlso: AX=E801h"Phoenix"
--------b-15E820-----------------------------
INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
AX = E820h
EAX = 0000E820h
EDX = 534D4150h ('SMAP')
EBX = continuation value or 00000000h to start at beginning of map
ECX = size of buffer for result, in bytes (should be >= 20 bytes)
ES:DI -> buffer for result (see #00581)
Return: CF clear if successful
EAX = 534D4150h ('SMAP')
ES:DI buffer filled
EBX = next offset from which to copy or 00000000h if all done
ECX = actual length returned in bytes
CF set on error
AH = error code (86h) (see #00496 at INT 15/AH=80h)
Notes: originally introduced with the Phoenix BIOS v4.0, this function is
now supported by most newer BIOSes, since various versions of Windows
call it to find out about the system memory
a maximum of 20 bytes will be transferred at one time, even if ECX is
higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
value of ECX on entry, and always copy 20 bytes
some BIOSes expect the high word of EAX to be clear on entry, i.e.
EAX=0000E820h
if this function is not supported, an application should fall back
to AX=E802h, AX=E801h, and then AH=88h
the BIOS is permitted to return a nonzero continuation value in EBX
and indicate that the end of the list has already been reached by
returning with CF set on the next iteration
this function will return base memory and ISA/PCI memory contiguous
with base memory as normal memory ranges; it will indicate
chipset-defined address holes which are not in use and motherboard
memory-mapped devices, and all occurrences of the system BIOS as
reserved; standard PC address ranges will not be reported
SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
Format of Phoenix BIOS system memory map address range descriptor:
Offset Size Description (Table 00580)
00h QWORD base address
08h QWORD length in bytes
10h DWORD type of address range (see #00581)
(Table 00581)
Values for System Memory Map address type:
01h memory, available to OS
02h reserved, not available (e.g. system ROM, memory-mapped device)
03h ACPI Reclaim Memory (usable by OS after reading ACPI tables)
04h ACPI NVS Memory (OS is required to save this memory between NVS
sessions)
other not defined yet -- treat as Reserved
SeeAlso: #00580
--------b-15E881-----------------------------
INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
AX = E881h
Return: CF clear if successful
EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
EBX = extended memory above 16M, in 64K blocks
ECX = configured memory 1M to 16M, in K
EDX = configured memory above 16M, in 64K blocks
CF set on error
Notes: supported by AMI BIOSes dated 8/23/94 or later
this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
used as a fall-back by newer versions if AX=E820h is not supported
SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
--------m-15F200CX454D-----------------------
INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
AX = F200h
CX = 454Dh
Return: CF clear if hardware already initialised
BX = upper RAM areas in use
bit 0: C000-C3FF
bit 1: C400-C7FF
...
bit 11: EC00-EFFF
CF set if hardware not initialised yet
--------B-1600-------------------------------
INT 16 - KEYBOARD - GET KEYSTROKE
AH = 00h
Return: AH = BIOS scan code
AL = ASCII character
Notes: on extended keyboards, this function discards any extended keystrokes,
returning only when a non-extended keystroke is available
the BIOS scan code is usually, but not always, the same as the hardware
scan code processed by INT 09. It is the same for ASCII keystrokes
and most unshifted special keys (F-keys, arrow keys, etc.), but
differs for shifted special keys
some (older) clone BIOSes do not discard extended keystrokes and manage
function AH=00h and AH=10h the same
the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
keystrokes (same as with functions 10h and 20h), but will always
translate prefix E0h to 00h. This allows old programs to use extended
keystrokes and should not cause compatibility problems
SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
SeeAlso: INT 09,INT 15/AH=4Fh
--------B-1601-------------------------------
INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
AH = 01h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AH = BIOS scan code
AL = ASCII character
Note: if a keystroke is present, it is not removed from the keyboard buffer;
however, any extended keystrokes which are not compatible with 83/84-
key keyboards are removed by IBM and most fully-compatible BIOSes in
the process of checking whether a non-extended keystroke is available
some (older) clone BIOSes do not discard extended keystrokes and manage
function AH=00h and AH=10h the same
the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
keystrokes (same as with functions 10h and 20h), but will always
translate prefix E0h to 00h. This allows old programs to use extended
keystrokes and should not cause compatibility problems
SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h,INT 09,INT 15/AH=4Fh
--------B-1602-------------------------------
INT 16 - KEYBOARD - GET SHIFT FLAGS
AH = 02h
Return: AL = shift flags (see #00582)
AH destroyed by many BIOSes
SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h
Bitfields for keyboard shift flags:
Bit(s) Description (Table 00582)
7 Insert active
6 CapsLock active
5 NumLock active
4 ScrollLock active
3 Alt key pressed (either Alt on 101/102-key keyboards)
2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
1 left shift key pressed
0 right shift key pressed
SeeAlso: #00587,#03743,MEM 0040h:0017h,#M0010
--------B-1603-------------------------------
INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
AH = 03h
AL = subfunction
00h set default delay and rate (PCjr and some PS/2)
01h increase delay before repeat (PCjr)
02h decrease repeat rate by factor of 2 (PCjr)
03h increase delay and decrease repeat rate (PCjr)
04h turn off typematic repeat (PCjr and some PS/2)
05h set repeat rate and delay (AT,PS)
BH = delay value (00h = 250ms to 03h = 1000ms)
BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
06h get current typematic rate and delay (newer PS/2s)
Return: BL = repeat rate (above)
BH = delay (above)
Return: AH destroyed by many BIOSes
Note: use INT 16/AH=09h to determine whether some of the subfunctions are
supported
SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
--------B-1604-------------------------------
INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
AH = 04h
AL = keyclick state
00h off
01h on
Return: AH destroyed by many BIOSes
SeeAlso: AH=03h,AH=04h"K3PLUS"
--------b-1604-------------------------------
INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
AH = 04h
Note: this interrupt is identical to INT 51 on the Tandy 2000
SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
SeeAlso: INT 51"Tandy 2000"
--------K-1604-------------------------------
INT 16 - K3PLUS v6.22+ - SET KEYCLICK
AH = 04h
AL = keyclick state
00h keyclick off, leave loudness setting unchanged
01h keyclick on, leave loudness setting unchanged
else
bit 0: keyclick enabled if set
bits 7-1: new keyclick loudness (non-zero)
Return: AH destroyed by many BIOSes
Note: Applications which try to set a new loudness, but are unsure of the
results of other INT 16/AH=04h implementations, should set the new
loudness first, and then call this function again with AL=01h or
AL=00h
SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
--------B-1605-------------------------------
INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
AH = 05h
CH = BIOS scan code
CL = ASCII character
Return: AL = status
00h if successful
01h if keyboard buffer full
AH destroyed by many BIOSes
Notes: under DESQview, a number of "keystrokes" invoke specific
DESQview-related actions when they are read from the keyboard
buffer (see #00583)
similarly, some "keystrokes" invoke special functions on the HP 100LX
and HP 200LX (see #00584)
SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
SeeAlso: MEM 0040h:001Eh
(Table 00583)
Values for pseudo-keystrokes for DESQview:
38FBh or FB00h switch to next window (only if main menu already popped up)
38FCh or FC00h pop up DESQview main menu
38FEh or FE00h close the current window
38FFh or FF00h pop up DESQview learn menu
(Table 00584)
Values for pseudo-keystrokes for HP 100LX/200LX:
EE00h pop up topcard display and set other system manager applications
into sleep mode
--------B-1605-------------------------------
INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
AH = 05h
AL = function
01h set keyboard layout to French
02h set keyboard layout to German
03h set keyboard layout to Italian
04h set keyboard layout to Spanish
05h set keyboard layout to UK
80h check if function supported
Return: AL <> 80h if supported
Return: ???
AH destroyed by many BIOSes
Note: this function is called by the DOS 3.2 KEYBxx.COM
SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
--------b-1605-------------------------------
INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
AH = 05h
Desc: reset the keyboard and flush the keyboard buffer
Note: this interrupt is identical to INT 51 on the Tandy 2000
SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
----------160600-----------------------------
INT 16 - AAKEYS - GET NEXT KEYBOARD EVENT
AX = 0600h
Return: CF clear if successful
AL = next keyboard event in event buffer, FFh if buffer overflowed
CF set on error
AL = 00h buffer empty
BX destroyed
Program: AAKEYS is a TSR by Anthony Appleyard which records keyboard scan
codes in a 256-byte buffer in addition to any normal processing which
takes place
Note: the installation check consists of calling INT 16/AX=06xxh (where 'xx'
is any subfunction other than those listed here) and testing whether
AX=BEEFh on return
SeeAlso: AX=0601h,AX=0602h,AX=0603h,AX=0604h
----------160601-----------------------------
INT 16 - AAKEYS - EMPTY KEY-EVENT BUFFER
AX = 0601h
Return: nothing
SeeAlso: AX=0600h,AX=0602h,AX=0603h,AX=0604h
----------160602-----------------------------
INT 16 - AAKEYS - DISABLE AAKEYS
AX = 0602h
Return: AX,DX destroyed
Desc: restores INT 09 and INT 16 and clears the TSRs signature byte
SeeAlso: AX=0600h,AX=0601h,AX=0603h,AX=0604h
----------160603-----------------------------
INT 16 - AAKEYS - GET KEY-EVENT BUFFER
AX = 0603h
Return: ES:BX -> 256-byte circular key-event buffer
ES:[AX] = offset of head of buffer
ES:[AX+1] = offset of tail of buffer
SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0604h
----------160604-----------------------------
INT 16 - AAKEYS - EMPTY BIOS KEYBOARD BUFFER
AX = 0604h
Return: AX destroyed
SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0603h
--------B-1609-------------------------------
INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
AH = 09h
Return: AL = supported keyboard functions (see #00585)
AH destroyed by many BIOSes
Note: this function is only available if bit 6 of the second feature byte
returned by INT 15/AH=C0h is set (see #00509)
SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
Bitfields for supported keyboard functions:
Bit(s) Description (Table 00585)
7 reserved
6 INT 16/AH=20h-22h supported (122-key keyboard support)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -