| plan 9 kernel history: overview | file list | diff list |
1993/1003/carrera/kbd.c (diff list | history)
| 1993/1001/sys/src/9/carrera/kbd.c:19,24 – 1993/1003/sys/src/9/carrera/kbd.c:19,25 (short | long | prev | next) | ||
| 1993/0907 | Ktest= 0xAB, /* keyboard test */ Kdisable= 0xAD, /* disable keyboard */ Kenable= 0xAE, /* enable keyboard */ | |
| 1993/1003 | Kmseena= 0xA8, /* enable mouse */ | |
| 1993/0907 | Krdin= 0xC0, /* read input port */ Krdout= 0xD0, /* read output port */ Kwrout= 0xD1, /* write output port */ | |
| 1993/1001/sys/src/9/carrera/kbd.c:46,51 – 1993/1003/sys/src/9/carrera/kbd.c:47,53 | ||
| 1993/0907 | * command register bits */ Cintena= 1<<0, /* enable output interrupt */ | |
| 1993/1003 | Cmseint= 1<<1, /* enable mouse interrupt */ | |
| 1993/0907 | Csystem= 1<<2, /* set system */ Cinhibit= 1<<3, /* inhibit override */ Cdisable= 1<<4, /* disable keyboard */ | |
| 1993/1001/sys/src/9/carrera/kbd.c:187,197 – 1993/1003/sys/src/9/carrera/kbd.c:189,222 | ||
| 1993/1001 | void mouseintr(void) { | |
| 1993/1003 | uchar c; static int nb; int buttons, dx, dy; static short msg[3]; static uchar b[] = {0, 1, 4, 5, 2, 3, 6, 7, 0, 1, 2, 5, 2, 3, 6, 7 }; | |
| 1993/1001 | kbdwait(); | |
| 1993/1003 | c = KBDDAT; /* * check byte 0 for consistency */ if(nb==0 && (c&0xc8)!=0x08) return; msg[nb] = c; if(++nb == 3){ nb = 0; if(msg[0] & 0x10) msg[1] |= 0xFF00; if(msg[0] & 0x20) msg[2] |= 0xFF00; buttons = b[msg[0]&7]; dx = msg[1]; dy = -msg[2]; mousetrack(buttons, dx, dy); } | |
| 1993/0907 | } int | |
| 1993/1001/sys/src/9/carrera/kbd.c:342,347 – 1993/1003/sys/src/9/carrera/kbd.c:367,401 | ||
| 1993/0907 | } } | |
| 1993/1003 | /* * send a command to the mouse */ static int mousecmd(int cmd) { int tries; unsigned int c; c = 0; tries = 0; do{ if(tries++ > 2) break; OUTWAIT; KBDCTL = 0xD4; OUTWAIT; KBDDAT = cmd; OUTWAIT; kbdwait(); c = KBDDAT; } while(c == 0xFE || c == 0); if(c != 0xFA){ print("mouse returns %2.2ux to the %2.2ux command\n", c, cmd); return -1; } return 0; } | |
| 1993/0907 | int kbdinit(void) { | |
| 1993/1001/sys/src/9/carrera/kbd.c:387,396 – 1993/1003/sys/src/9/carrera/kbd.c:441,455 | ||
| 1993/0907 | OUTWAIT; KBDCTL = Kwrcmd; OUTWAIT; | |
| 1993/1003 | KBDDAT = Csystem | Cinhibit | Cintena | Cmseint; | |
| 1993/0907 | OUTWAIT; KBDCTL = Kenable; | |
| 1993/1003 | OUTWAIT; KBDCTL = Kmseena; | |
| 1993/0907 | empty(); | |
| 1993/1003 | mousecmd(0xEA); mousecmd(0xF4); | |
| 1993/0907 | return 1; } | |