userip.hh

//*************************************************************************
//  MODULE : Userip - Module defines high level user input classes        *
//  AUTHOR : Ron Chernich                                                 *
//  PURPOSE: Definition of classes to provide interrupt service for mouse *
//           and keyboard services based on the "PAL" module.             *
//  HISTORY:                                                              *
//   21-JAN-93	First (MSC/C++ 7.00) version				  *
//   08-APR-93	Start/Stop added and GetTicks adjusted for 1mS (hah!)	  *
//   27-OCT-93  Smart pointer hiding added (mouse int, fn 16)             *
//   30-OCT-93  Massive simplification through the PAL abstraction module * 
//   04-FEB-94  "Tock" size changed to 32 bits                            *
//*************************************************************************

#ifndef _RCOS_USERIP_

  #include "rcos.hh"
  #include "rng.hh"
  #include "obj.hh"
  #include "pal.hh"


  ////////////
  // ID of two keypress ring buffers
  //
  enum { _ASC = 1, _ALT };


  //////////////////
  // This class defines an object to perform all Host keyboard input
  //
  class Kbd {
    Rng *pasc, *palt;			// circular queues for key input
  public:
    Kbd();
    ~Kbd();
    char KeyGet (UINT16);		// Get a key from specified queue
    BOOL KeyHit (UINT16);		// returns TRUE is queue has data
    void KeyFill (void);		// Empty BIOS buffer into ours
    void KeyFlush (UINT16);		// Disgard contents of this queue
    void KeyPut (UINT16, char);		// Put character is selected queue
  };


  ///////////////
  // Class for DOS mouse support..
  // (Details hidden by Program Abstraction Layer module .. )
  //
  class Mouse {
    BOOL  bInstalled;				// set when driver detected
  public:
    Mouse (void);
    ~Mouse (void);
    BOOL GetEvent (point&);			// Get co-ords and reset flag
    void ShowPointer (void);			// Draw the pointer
    void HidePointer (void);            	// Restore area under pointer
    void AutoPointer (INT16,INT16,INT16,INT16); // Hide when in region
  };


  //////////////////
  // I really wanted these to be private to the timer class, but I
  // don't seem to be able to get either DOS compiler to wear that!
  //
  extern Kbd   KbdIn;
  extern Mouse Mickey;


  #define _RCOS_USERIP_

#endif

/********************************** eof **********************************/