From 2d62597e02cee54803b472a7250d8760a42c2761 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 10 May 1994 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1994-05-10 --- pc/clock.c | 11 +++++++++-- pc/devvga.c | 22 ++++++---------------- pc/kbd.c | 1 + 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/pc/clock.c b/pc/clock.c index 4e625689cae4df7c9209fee3f534fa71daee5862..1b982170f145ca67ee5eea1d367b8860c590ed02 100644 --- a/pc/clock.c +++ b/pc/clock.c @@ -47,14 +47,15 @@ clock(Ureg *ur, void *arg) { Proc *p; int nrun = 0; + extern int hwcursor; USED(arg); m->ticks++; + uartclock(); checkalarms(); hardclock(); - uartclock(); /* * process time accounting @@ -80,7 +81,13 @@ clock(Ureg *ur, void *arg) } /* last because it could spllo() */ - mouseclock(); + if(hwcursor) + mouseclock(); + else { + spllo(); + mouseclock(); + splhi(); + } } /* diff --git a/pc/devvga.c b/pc/devvga.c index 9c9db6694c8fd9488f0eba93cd075ebcdc18da08..cf68789c62b402cac199ea83a355b5f154b961e5 100644 --- a/pc/devvga.c +++ b/pc/devvga.c @@ -111,7 +111,7 @@ Vgacard vgachips[] = }; Vgacard *vgacard; /* current vga card */ -static int hwcursor; +int hwcursor; /* * work areas for bitblting screen characters, scrolling, and cursor redraw @@ -1325,7 +1325,7 @@ setcursor(ulong *setbits, ulong *clrbits, int offx, int offy) void cursoron(int dolock) { - int xoff, yoff, s; + int xoff, yoff; Rectangle r; uchar *a; struct { @@ -1338,11 +1338,8 @@ cursoron(int dolock) if(cursor.disable) return; - if(dolock){ - s = 0; /* to avoid compiler warning */ + if(dolock) lock(&cursor); - } else - s = spllo(); /* to avoid freezing out the eia ports */ if(hwcursor) (*vgacard->mvcursor)(mousexy()); @@ -1394,30 +1391,23 @@ cursoron(int dolock) if(dolock) unlock(&cursor); - else - splx(s); } void cursoroff(int dolock) { - int s; - if(hwcursor) return; if(cursor.disable) return; - if(dolock){ - s = 0; /* to avoid a compiler warning */ + if(dolock) lock(&cursor); - } else - s = spllo(); /* to avoid freezing out the eia ports */ + if(--cursor.visible == 0 && cursor.tl > 0) screenload(cursor.clipr, (uchar*)backbits, cursor.tl, cursor.l, 0); + if(dolock) unlock(&cursor); - else - splx(s); } static void diff --git a/pc/kbd.c b/pc/kbd.c index d85b5a8483a3fb86f56b75e13764831e921c901e..892e08aacd330cb516f51ef8d186b7e926ac2e5a 100644 --- a/pc/kbd.c +++ b/pc/kbd.c @@ -225,6 +225,7 @@ i8042reset(void) outready(); outb(Cmd, 0xD1); outready(); + delay(100); outb(Data, 0xDE); /* set reset line high */ outready(); }