From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/isxkbrd.c | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/isxkbrd.c (limited to 'reference/C/CONTRIB/SNIP/isxkbrd.c') diff --git a/reference/C/CONTRIB/SNIP/isxkbrd.c b/reference/C/CONTRIB/SNIP/isxkbrd.c new file mode 100755 index 0000000..b104a7c --- /dev/null +++ b/reference/C/CONTRIB/SNIP/isxkbrd.c @@ -0,0 +1,47 @@ +/* +** ISXKBRD.C - public domain by Ed Kowalski. +** +** isxkeybrd() - detects enhanced kbd +*/ + +#include + +/* +** Check for enhanced keyboard support. +*/ + +int isxkeybrd(void) +{ + union REGS rg; + unsigned kbdflags; + + rg.h.ah = 0x02; /* check BIOS supports enhanced kbd */ + int86(0x16, &rg, &rg); /* get kbd flags */ + kbdflags = rg.h.al; + + /* mess 'em up, get enhanced flags */ + + rg.x.ax = 0x1200 + kbdflags ^ 0xff; + int86(0x16, &rg, &rg); + if (rg.h.al == kbdflags) /* BIOS supports enhanced keyboard */ + { + /* if bit 4 at 40:96h is set machine has an enhanced kbd */ + + if ((*(( char far *) 0x400096L) & 0x10)) + return 1; /* enhanced keyboard present */ + } + return 0; /* don't use enhanced keyboard calls */ +} + +#ifdef TEST + +#include +main() +{ + if (isxkeybrd()) + puts( "Enhanced Keyboard supported" ); + else puts( "Enhanced Keyboard NOT supported "); + return 0; +} + +#endif /* TEST */ -- cgit v1.2.3-54-g00ecf