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 |