|       | Interrups | Categories | Contents | 

AX = AD80h
Return:
AL = FFh if installed BX = version number (BH = major, BL = minor) ES:DI -> internal data (see #02972) AH destroyed (set to FFh by some implementations/versions)
Notes: MS-DOS 3.30, PC-DOS 4.01, MS-DOS 5.00, and MS-DOS 6.22 all report version 1.00.. This function was undocumented prior to the release of DOS 5.0. Most versions of KEYB completely replace the BIOS INT 09 handler, but Novell DOS's KEYB partially uses the BIOS code and thus continues to chain to the original INT 09 at times. Some utilities check for AX=FFFFh on return
See Also:
AX=AD80h"Novell" - AX=AD81h - AX=AD82h - AX=AD8
 
Format of KEYB internal data:
Offset  Size    Description     (Table 02972)
00h    DWORD   original INT 09
04h    DWORD   original INT 2F
08h    DWORD   unused (0) original INT 16 in older KEYB versions???
0Ch    WORD    flags A (see #02973)
0Eh    WORD    flags B (see #02974)
10h    BYTE    flags??? (bit1 used)
11h    BYTE    ???
12h  4 BYTEs   ???
16h  2 BYTEs   country ID letters, default is "US"
18h    WORD    current code page (see #01757 at INT 21/AX=6602h)
---DOS 3.3---
1Ah    WORD    pointer to first item in list of code page tables???
1Ch    WORD    pointer to ??? item in list of code page tables
1Eh  2 BYTEs   unused???
20h    WORD    pointer to key translation data (see #02976)
22h    WORD    pointer to last item in code page table list (see #02975)
24h  9 BYTEs   ???
---DOS 4.01---
1Ah  2 BYTEs   ???
1Ch    WORD    pointer to first item in list of code page tables???
1Eh    WORD    pointer to ??? item in list of code page tables
20h 2 BYTEs    unused???
22h    WORD    pointer to key translation data (see #02976)
24h    WORD    pointer to last item in code page table list (see #02975)
26h  9 BYTEs   ???
---DOS 6.22--- (checked out with 6.22, but might be earlier)
1Ah  2 BYTEs   ???
1Ch    WORD    pointer to current (first???) item in list of code page tables
(corresponding to codepage indicated at offset 18h)
(initial value is FFFFh)
1Eh    WORD    pointer to (entry to) list of code page tables (see #02975)
If not FFFFh, INT 2F/AX=AD81h scans this list of code page
tables until the requested code page was found in list or
end of table was reached (FFFFh). If found, offsets 18h and
1Ch will be changed to requested new code page. If not found,
it returns with AX=0001h 'code page not supported').
 20h    WORD    unused??? (initial value: Note:
It appears that none of the bits is ever set inside
KEYBs code!
The following is guesswork:
 bit15: bit14-10: bit 9: bit 8-0: Note:
At least in MS-DOS v6.22, the signature "SHARED DATA" immediately
precedes this structure
 
Bitfields for MS-DOS v6.22 KEYB flags A:
Bit(s)  Description     (Table 02973)
15     unused??? (0)
14     set on machine with BIOS machine type FBh or FEh/FFh without enh kbd
 13     not FAh: 11     not FAh: (on ATs: =1: =1: =1: See Also:
#02974 - MEM F000h:FFFEh - INT 15/AH=C0h
 
Bitfields for MS-DOS v6.22 KEYB flags B:
Bit(s)  Description     (Table 02974)
15     INT 16/AH=1xh supported (INT 16h/AH=92h call returns AH<=80h).
If clear, extended keyboard scan codes are immediately discarded
14     INT 16/AH=2xh supported (INT 16h/AH=A2h call returns AH<=80h)
13     unused (0)
12     network installed (INT 2F/AX=B800h)
11     original IBM PC (BIOS date 1981)
10     PC or PC/XT (BIOS machine type byte of FBh or FEh)
9      PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
8      unused (0)
7      IBM PS/2 model 30 (BIOS machine type byte of FAh)
6      IBM AT (BIOS machine type FCh)
5      IBM PS/2 (BIOS machine type F8h)
 4      PS/2 and unknown only: =1: See Also:
#02972 - #02973
 
Format of code page table list entries:
Offset  Size    Description     (Table 02975)
00h    WORD    pointer to next item, FFFFh = last
02h    WORD    code page (see #01757 at INT 21/AX=6602h)
04h  2 BYTEs   ???
 
Format of KEYB translation data:
Offset  Size    Description     (Table 02976)
00h    WORD    size of data in bytes, including this word
02h N-2 BYTEs  ???
 
Category: 
Keyboard Enhancers
- 
Int 2Fh
- 
M
 
FFFFh)
22h    WORD    pointer to key translation data (see #02455)
24h    WORD    pointer to last item in code page table list (see #02454)
26h    WORD    CAPSLock/ShiftLock management flags??? (0)
=1: With country specific keyboard mapping (
Unused (0)
=1: With country specific keyboard mapping active:
some kind of temporary (table) shift???
Unused (0)
28h    BYTE    unused (0)
29h    BYTE    make code xx for 
???
12     set on start of machine detection, cleared on machine types F9h, FBh,
FEh, FFh
???.
Override bit12 NOT to set NumLock on)
10     set on machine type F9h
9      unused??? (0)
8      unused??? (0)
7      used by INT 09, but never set!.
After keyboard self test resulting AAh, INT 09 handler will (re)set
keyboard code-set 1 and temporarily disable a PS/2 mouseport.
6      used by INT09, but never set!.
After keyboard self test resulting AAh, INT 09 handler will (re)set
keyboard code-set 1 and temporarily disable a PS/2 mouseport.
5      set for JP, KO, PR, TA layouts during installation???.
Some special codepage (>932???) management???
4-0    unused??? (0)
Non-standard 8042 reported by INT 15/AH=C0h.
After keyboard self test resulting AAh, INT 09 handler will (re)set
keyboard code-set 1 and temporarily disable a PS/2 mouseport.
3      temporary flag???
2-0    ???

|       | Interrups | Categories | Contents | 
| 
 | 
