2013-06-26 22:58:41 +00:00
|
|
|
/*
|
|
|
|
* COPYRIGHT: GPL - See COPYING in the top level directory
|
|
|
|
* PROJECT: ReactOS Virtual DOS Machine
|
|
|
|
* FILE: timer.h
|
2013-11-26 20:20:51 +00:00
|
|
|
* PURPOSE: Programmable Interval Timer emulation
|
2013-06-26 22:58:41 +00:00
|
|
|
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _TIMER_H_
|
|
|
|
#define _TIMER_H_
|
|
|
|
|
|
|
|
/* INCLUDES *******************************************************************/
|
|
|
|
|
|
|
|
#include "ntvdm.h"
|
|
|
|
|
|
|
|
/* DEFINES ********************************************************************/
|
|
|
|
|
|
|
|
#define PIT_CHANNELS 3
|
|
|
|
#define PIT_BASE_FREQUENCY 1193182LL
|
|
|
|
#define PIT_DATA_PORT(x) (0x40 + (x))
|
|
|
|
#define PIT_COMMAND_PORT 0x43
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
PIT_MODE_INT_ON_TERMINAL_COUNT,
|
|
|
|
PIT_MODE_HARDWARE_ONE_SHOT,
|
|
|
|
PIT_MODE_RATE_GENERATOR,
|
|
|
|
PIT_MODE_SQUARE_WAVE,
|
|
|
|
PIT_MODE_SOFTWARE_STROBE,
|
|
|
|
PIT_MODE_HARDWARE_STROBE
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct _PIT_CHANNEL
|
|
|
|
{
|
|
|
|
WORD ReloadValue;
|
|
|
|
WORD CurrentValue;
|
|
|
|
WORD LatchedValue;
|
|
|
|
INT Mode;
|
|
|
|
BOOLEAN Pulsed;
|
|
|
|
BOOLEAN LatchSet;
|
|
|
|
BOOLEAN InputFlipFlop;
|
|
|
|
BOOLEAN OutputFlipFlop;
|
|
|
|
BYTE AccessMode;
|
|
|
|
} PIT_CHANNEL, *PPIT_CHANNEL;
|
|
|
|
|
2013-11-03 20:31:19 +00:00
|
|
|
extern PPIT_CHANNEL PitChannel2; // Needed for PC Speaker
|
|
|
|
|
2013-06-26 22:58:41 +00:00
|
|
|
/* FUNCTIONS ******************************************************************/
|
|
|
|
|
|
|
|
VOID PitWriteCommand(BYTE Value);
|
|
|
|
VOID PitWriteData(BYTE Channel, BYTE Value);
|
2013-11-26 20:20:51 +00:00
|
|
|
|
2013-11-01 01:57:40 +00:00
|
|
|
VOID PitDecrementCount(DWORD Count);
|
2013-10-28 02:25:54 +00:00
|
|
|
DWORD PitGetResolution(VOID);
|
2013-11-26 20:20:51 +00:00
|
|
|
BOOLEAN PitInitialize(VOID);
|
2013-06-26 22:58:41 +00:00
|
|
|
|
2013-08-09 18:55:35 +00:00
|
|
|
#endif // _TIMER_H_
|
2013-06-26 22:58:41 +00:00
|
|
|
|
|
|
|
/* EOF */
|