/* Handler del teclado */ void int_09() { char scancode; char eoi = EOI; _read(KEYBOARD, &scancode, 1); // We check if the scancode is a char or a control key. int flag = scancode >= 0x02 && scancode <= 0x0d; flag = flag || (scancode >= 0x10 && scancode <= 0x1b); flag = flag || (scancode >= 0x1E && scancode <= 0x29); flag = flag || (scancode >= 0x2b && scancode <= 0x35); if (flag) pushC(scanCodeToChar(scancode)); //guarda un char en el stack else controlKey(scancode); // Envia el scancode al analizador de control keys. _write(PIC1, &eoi, 1); }
// Keyboard handler void int_09() { krn++; char scancode; scancode = _in(0x60); // We check if the scancode is a char or a control key. int flag = scancode >= 0x02 && scancode <= 0x0d; flag = flag || (scancode >= 0x10 && scancode <= 0x1b); flag = flag || (scancode >= 0x1E && scancode <= 0x29); flag = flag || (scancode >= 0x2b && scancode <= 0x35); if (flag) { char sc = scanCodeToChar(scancode); if(sc != 0 && sc != EOF) { pushC(sc); //guarda un char en el stack } } else { controlKey(scancode); // Envia el scancode al analizador de control keys. } kernel_buffer[0] = KILL; krn--; }