I wrote:

> [While I'm in GRUB] I can type exactly *one* character on the usb keyboard.  
> When trying to
> read a second character from the keyboard, the system hangs.

I'd say this is an Apple BIOS bug.


The following INT 16, Function 0 BIOS call (GET KEYSTROKE) hangs:
(tested from DEBUG.EXE, using a Windows ME boot floppy / CD)

        MOV     AH, 0
        INT     16


But checking with INT 16, Function 1 (CHECK FOR KEYSTROKE) and waiting until
a keystoke is available, then calling INT 16, Function 0 works just fine:

wait:   MOV     AH, 1
        INT     16
        JZ      wait
        MOV     AH, 0
        INT     16


I've modified GRUB with this patch, and now I have a working keyboard inside
GRUB:

diff -ru ../opensolaris-20060404/usr/src/grub/grub-0.95/stage2/asm.S 
usr/src/grub/grub-0.95/stage2/asm.S
--- ../opensolaris-20060404/usr/src/grub/grub-0.95/stage2/asm.S 2006-04-05 
23:28:21.000000000 +0200
+++ usr/src/grub/grub-0.95/stage2/asm.S 2006-04-12 19:09:52.939626580 +0200
@@ -2127,6 +2164,11 @@
 ENTRY(console_getkey)
        push    %ebp

+wait_for_key:
+       call    EXT_C(console_checkkey)
+       incl    %eax
+       jz      wait_for_key
+
        call    EXT_C(prot_to_real)
        .code16
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to