diff --git a/grub-0.97-mactel-kbd.patch b/grub-0.97-mactel-kbd.patch index ab6d47a..40c4a8b 100644 --- a/grub-0.97-mactel-kbd.patch +++ b/grub-0.97-mactel-kbd.patch @@ -1,5 +1,5 @@ ---- grub-0.97/stage2/asm.S.mactel-kbd 2006-05-27 13:13:47.000000000 -0400 -+++ grub-0.97/stage2/asm.S 2006-05-27 13:15:52.000000000 -0400 +--- grub-0.97/stage2/asm.S.mactel-kbd 2006-06-12 15:24:41.000000000 -0400 ++++ grub-0.97/stage2/asm.S 2006-06-12 16:35:17.000000000 -0400 @@ -1651,7 +1651,30 @@ jnz 3f ret @@ -54,3 +54,51 @@ andb $K_IBUF_FUL, %al jnz gloop1 +@@ -1993,17 +2021,31 @@ + + call EXT_C(prot_to_real) + .code16 +- ++.again: ++ mov $0x11, %ah /* poll kbd */ + int $0x16 +- +- movw %ax, %dx /* real_to_prot uses %eax */ ++ jz .again ++#if 0 ++/* XXX handle serial here? -- pj */ ++ jnz .kbd ++#endif ++.kbd: ++ mov $0x10, %ah ++ int $0x16 ++ cmp $0xe0, %al ++ jnz .not_ext ++ xor %al, %al ++.not_ext: ++ and %al, %al ++ jz .func_key ++.func_key: ++ movw %ax, %dx /* real_to_prot uses %eax */ + call translate_keycode + call remap_ascii_char + DATA32 call EXT_C(real_to_prot) + .code32 +- +- movw %dx, %ax ++ mov %edx, %eax + + pop %ebp + ret +@@ -2029,11 +2071,11 @@ + call EXT_C(prot_to_real) /* enter real mode */ + .code16 + +- movb $0x1, %ah ++ movb $0x11, %ah + int $0x16 + + DATA32 jz notpending + movw %ax, %dx + call translate_keycode + call remap_ascii_char