From d3411e0d51c282841fb0137fb3764860c9006002 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Mon, 6 Oct 2008 05:36:23 -0400 Subject: [PATCH] Make keyboard actually reliable again. Update what's actually on the screen, not what we wish to be on the screen. --- aseg/counter.c | 7 +++---- net/net.c | 7 +++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/aseg/counter.c b/aseg/counter.c index d6208d6..055ceec 100644 --- a/aseg/counter.c +++ b/aseg/counter.c @@ -22,10 +22,8 @@ static void cause_kbd_irq() while (inb(0x64) & 0x1) inb(0x60); outb(0x60, 0xee); /* Cause an IRQ. */ - while (!(inb(0x64) & 0x1)) + while (inb(0x60) != 0xEE) ; - while (inb(0x64) & 0x1) - inb(0x60); } void pci_dump() { @@ -62,7 +60,8 @@ void pci_dump() { { b = kbd_get_injected_scancode(); lastctr = counter; - inb(0x60); + while (inb(0x64) & 0x1) + inb(0x60); } else b = inb(0x60); if ((curdev == 0) && (b == 0x01)) { /* Escape */ diff --git a/net/net.c b/net/net.c index e1c7444..46ea9cd 100644 --- a/net/net.c +++ b/net/net.c @@ -83,6 +83,13 @@ void eth_poll() // if ((c++) % 2) // return; + + if (((base + 80*25*2)%0x8000) < base) + { + if ((pos > ((base + 80*25*2)%0x8000)) && (pos < base)) + pos = base; + } else if ((pos > base + 80*25*2) || (pos < base)) + pos = base; test[0] = pos >> 8; test[1] = pos & 0xFF; -- 2.43.0