--- Net2/arch/i386/stand/kbd.c 2018/04/24 18:04:01 1.1 +++ Net2/arch/i386/stand/kbd.c 2018/04/24 18:20:32 1.1.1.4 @@ -33,7 +33,8 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)kbd.c 7.4 (Berkeley) 5/4/91 + * from: @(#)kbd.c 7.4 (Berkeley) 5/4/91 + * kbd.c,v 1.2 1993/05/22 08:02:18 cgd Exp */ #define L 0x01 /* locking function */ @@ -49,6 +50,7 @@ typedef unsigned char u_char; u_char inb(); +#ifdef notdef u_char action[] = { 0, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, /* scan 0- 7 */ ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, /* scan 8-15 */ @@ -127,13 +129,14 @@ struct key { #endif u_char shfts, ctls, alts, caps, num, stp; +#endif #define KBSTATP 0x64 /* kbd status port */ #define KBS_INP_BUF_FUL 0x02 /* kbd char ready */ #define KBDATAP 0x60 /* kbd data port */ #define KBSTATUSPORT 0x61 /* kbd status */ -u_char odt; +u_char odt, bdt; u_char kbd() { u_char dt, brk, act; @@ -148,6 +151,7 @@ loop: brk = dt & 0x80 ; dt = dt & 0x7f ; +#ifdef notdef act = action[dt]; if (act&SHF) { if(brk) shfts = 0; else shfts = 1; @@ -173,7 +177,7 @@ loop: if(!brk) stp ^= 1; } else if(brk) stp = 0; else stp = 1; } - if(ctl && alts && dt == 83) exit(); + if(ctls && alts && dt == 83) exit(); if ((act&ASCII) && !brk) { u_char chr; @@ -191,20 +195,32 @@ loop: while(inb(0x64)&1 == 1) inb(0x60);A*/ return(chr); } +#else + if (brk) + return(1); +#endif goto loop; } scankbd() { u_char c; +#ifdef notdef c = inb(0x60); - if (c == 0xaa) { odt = 0x2a; return (0); } - if (c == 0xfa) { odt = 0x7a; return (0); } + if (c == 83) exit(); + /*if (c == 0xaa) return (0); + if (c == 0xfa) return (0);*/ + + if (bdt == 0) { bdt = c&0x7f; return(0); } + + if(odt) return(1); + c &= 0x7f; - if ( (odt&0x7f) == c )return(0); - if(odt == 0) { odt = c; return(0); } - return(kbd()); + if (bdt == c) return(0); + odt = c; +#endif + return(1); } kbdreset() @@ -226,8 +242,12 @@ kbdreset() outb(0x64,0xd1); while (inb(0x64)&2); /* wait input ready */ outb(0x60,0xdf); + while (inb(0x64)&2); /* wait input ready */ + odt = bdt = 0; + inb(0x60); } +#ifdef notdef; u_char getchar() { u_char c; @@ -237,6 +257,7 @@ u_char getchar() { putchar(c); return(c); } +#endif reset_cpu() {