68 lines
1.8 KiB
C++
Executable file
68 lines
1.8 KiB
C++
Executable file
/*
|
|
File: simple_keyboard.H
|
|
|
|
Author: R. Bettati
|
|
Department of Computer Science
|
|
Texas A&M University
|
|
Date : 2017/02/17
|
|
|
|
Implements an interrupt handler for the keyboard.
|
|
The function is implemented in 'handle_interrupt'.
|
|
|
|
*/
|
|
|
|
#ifndef _SIMPLE_KEYBOARD_H_
|
|
#define _SIMPLE_KEYBOARD_H_
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
/* DEFINES */
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
/* -- (none) -- */
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
/* INCLUDES */
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
#include "interrupts.H"
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
/* S I M P L E K E Y B O A R D */
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
class SimpleKeyboard : public InterruptHandler {
|
|
|
|
public :
|
|
|
|
SimpleKeyboard();
|
|
/* Initialize the simple keyboard. */
|
|
|
|
virtual void handle_interrupt(REGS *_r);
|
|
/* This must be installed as the interrupt handler for the keyboard
|
|
when the system gets initialized. (e.g. in "kernel.C")
|
|
*/
|
|
|
|
static void init();
|
|
|
|
static void wait();
|
|
/* Wait until keyboard is pressed. The implementation is based
|
|
on busy looping! */
|
|
|
|
static char read();
|
|
/* Wait until keyboard is pressed and return the keycode.
|
|
Note: The keycode is not the same as the character!
|
|
Note2: This is a very "approximate" implementation. Not complete,
|
|
and likely not correct. Use only under duress!
|
|
The implementation is based on busy looping! */
|
|
|
|
private:
|
|
bool key_pressed;
|
|
char key_code;
|
|
static SimpleKeyboard kb;
|
|
|
|
static const unsigned short STATUS_PORT = 0x64;
|
|
static const unsigned short DATA_PORT = 0x60;
|
|
|
|
};
|
|
|
|
#endif
|