2000-02-18 03:39:52 +08:00
|
|
|
/* This is file GETKEY.S */
|
|
|
|
/*
|
2001-02-23 06:12:43 +08:00
|
|
|
** Copyright (C) 1993 DJ Delorie
|
2000-02-18 03:39:52 +08:00
|
|
|
**
|
|
|
|
** This file is distributed under the terms listed in the document
|
2001-02-23 06:12:43 +08:00
|
|
|
** "copying.dj".
|
2000-02-18 03:39:52 +08:00
|
|
|
** A copy of "copying.dj" should accompany this file; if not, a copy
|
|
|
|
** should be available from where this file was obtained. This file
|
|
|
|
** may not be distributed without a verbatim copy of "copying.dj".
|
|
|
|
**
|
|
|
|
** This file is distributed WITHOUT ANY WARRANTY; without even the implied
|
|
|
|
** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
|
|
Modified by J. Alan Eldridge, Liberty Brokerage, 77 Water St, NYC 10005
|
|
|
|
|
|
|
|
Changed handling of characters starting with 0xE0:
|
|
|
|
Now calls interrupt 16, function 10
|
|
|
|
if leading byte was 0x00, ah = 0x01
|
|
|
|
if leading byte was 0xE0, ah = 0x02
|
|
|
|
|
|
|
|
The main function is now called getxkey()...
|
|
|
|
getkey is provided to maintain compatibility with
|
|
|
|
already written software
|
|
|
|
*/
|
|
|
|
|
|
|
|
.globl _getxkey
|
|
|
|
_getxkey:
|
|
|
|
pushl %ebx
|
|
|
|
pushl %esi
|
|
|
|
pushl %edi
|
|
|
|
movb $0x10,%ah
|
|
|
|
int $0x16
|
|
|
|
mov $1,%bl
|
|
|
|
cmpb $0,%al
|
|
|
|
je L0
|
|
|
|
cmpb $0xE0,%al
|
|
|
|
jne L1
|
|
|
|
inc %bl
|
|
|
|
L0:
|
|
|
|
movb %ah,%al
|
|
|
|
movb %bl,%ah
|
|
|
|
jmp L2
|
|
|
|
L1:
|
|
|
|
movb $0,%ah
|
|
|
|
L2:
|
|
|
|
andl $0xffff,%eax
|
|
|
|
popl %edi
|
|
|
|
popl %esi
|
|
|
|
popl %ebx
|
|
|
|
ret
|
|
|
|
|
|
|
|
.globl _getkey
|
|
|
|
_getkey:
|
|
|
|
call _getxkey
|
|
|
|
testb $0x02,%ah
|
|
|
|
jz L3
|
|
|
|
movb $0x01,%ah
|
|
|
|
L3:
|
|
|
|
ret
|