VirtualBox

Changeset 50599 in vbox for trunk/src/VBox/Devices/PC/BIOS


Ignore:
Timestamp:
Feb 26, 2014 10:44:38 AM (11 years ago)
Author:
vboxsync
Message:

BIOS: Set ack/resend flags in IRQ1 handler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/keyboard.c

    r50166 r50599  
    475475    default:
    476476        if (scancode & 0x80) {
     477            BX_INFO("KBD: int09: release(?): %02X\n", scancode);
     478            /* Set ack/resend flags if appropriate. */
     479            if (scancode == 0xFA) {
     480                flag = read_byte(0x0040, 0x97) | 0x10;
     481                write_byte(0x0040, 0x97, flag);
     482            } else if (scancode == 0xFE) {
     483                flag = read_byte(0x0040, 0x97) | 0x20;
     484                write_byte(0x0040, 0x97, flag);
     485            }
    477486            break; /* toss key releases ... */
    478487        }
     
    586595    if ((((shift_flags >> 4) & 0x07) ^ (led_flags & 0x07)) != 0) {
    587596        int_disable();    //@todo: interrupts should be disabled already??
     597        BX_INFO("KBD: int16: Setting LEDs\n");
    588598        outb(0x60, 0xed);
    589599        while ((inb(0x64) & 0x01) == 0) outb(0x80, 0x21);
    590600        if ((inb(0x60) == 0xfa)) {
    591             led_flags &= 0xf8;
     601            led_flags &= 0xc8;
    592602            led_flags |= ((shift_flags >> 4) & 0x07);
    593603            outb(0x60, led_flags & 0x07);
     
    596606            inb(0x60);
    597607            write_byte(0x0040, 0x97, led_flags);
     608            BX_INFO("KBD: int16: LEDs set\n");
    598609        }
    599610        int_enable();
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette