From 7f277145579f2b961a3d43af18a35695f9837cee Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Wed, 11 May 2011 11:06:36 +0000 Subject: [PATCH] Correct Get Extended Shift States; Int 16 call 12 (thanks ripsaw). Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3711 --- src/ints/bios_keyboard.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ints/bios_keyboard.cpp b/src/ints/bios_keyboard.cpp index 7d91deda..cc2dc5fe 100644 --- a/src/ints/bios_keyboard.cpp +++ b/src/ints/bios_keyboard.cpp @@ -565,8 +565,10 @@ static Bitu INT16_Handler(void) { else reg_al=1; break; case 0x12: /* GET EXTENDED SHIFT STATES */ - reg_al=mem_readb(BIOS_KEYBOARD_FLAGS1); - reg_ah=mem_readb(BIOS_KEYBOARD_FLAGS2); + reg_al = mem_readb(BIOS_KEYBOARD_FLAGS1); + reg_ah = (mem_readb(BIOS_KEYBOARD_FLAGS2)&0x73) | + ((mem_readb(BIOS_KEYBOARD_FLAGS2)&4)<<5) | // SysReq pressed, bit 7 + (mem_readb(BIOS_KEYBOARD_FLAGS3)&0x0c); // Right Ctrl/Alt pressed, bits 2,3 break; case 0x55: /* Weird call used by some dos apps */