mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.9 KiB
124 lines
3.9 KiB
/*
|
|
* SoftPC Revision 3.0
|
|
*
|
|
* Title : Timer Adaptor definitions
|
|
*
|
|
* Description : Definitions for users of the Timer Adaptor
|
|
*
|
|
* Author : Jerry Kramskoy
|
|
*
|
|
* Notes : None
|
|
*
|
|
* Mods: (r3.2) : Export the variable timer_video_enabled, which is
|
|
* set in mda.c and cga.c when the bit in the mode
|
|
* register of the 6845 chip which controls whether
|
|
* the video display is on or off is flipped. (SCR 257).
|
|
*
|
|
* (r3.3) : Remove definition of struct timeval and stuct timezone
|
|
* for SYSTEMV. Equivalent host_ structures are now declared
|
|
* in host_time.h.
|
|
*/
|
|
/* SccsID[]="@(#)timer.h 1.15 10/27/93 Copyright Insignia Solutions Ltd."; */
|
|
/*
|
|
* ============================================================================
|
|
* Structure/Data definitions
|
|
* ============================================================================
|
|
*/
|
|
/*
|
|
* Information about the PC timer itself
|
|
*/
|
|
#define TIMER_CLOCK_RATE 1193180L /* Count rate of timer chip Hz */
|
|
#define TIMER_MICROSECS_PER_TICK (1000000.0 / TIMER_CLOCK_RATE)
|
|
#define MIN_COUNTER_VAL 65536L /* This many ticks at TIMER_CLOCK_RATE = 18.2 ms */
|
|
#define PC_TICK_INTV (MIN_COUNTER_VAL * (1000000.0 / TIMER_CLOCK_RATE))
|
|
#define TIMER_BIT_MASK 0x3e3
|
|
#define GATE_SIGNAL_LOW 0
|
|
#define GATE_SIGNAL_HIGH 1
|
|
#define GATE_SIGNAL_RISE 2
|
|
|
|
/*
|
|
* Our internal structures
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
word nticks;
|
|
unsigned long wrap;
|
|
} Timedelta;
|
|
|
|
/*
|
|
* ============================================================================
|
|
* External declarations and macros
|
|
* ============================================================================
|
|
*/
|
|
|
|
extern ULONG get_DOS_ticks IPT0(); /* get current DOS ticks */
|
|
|
|
extern void timer_init IPT0();
|
|
extern void timer_post IPT0();
|
|
extern void axe_ticks IPT1(int, ticks);
|
|
extern void SWTMR_init_funcptrs IPT0();
|
|
extern void SWTMR_inb IPT2(io_addr, port, half_word *, value);
|
|
extern void SWTMR_outb IPT2(io_addr, port, half_word, value);
|
|
extern void SWTMR_gate IPT2(io_addr, port, half_word, value);
|
|
extern void SWTMR_time_tick IPT0();
|
|
extern void host_release_timeslice IPT0();
|
|
|
|
#ifndef host_block_timer
|
|
extern void host_block_timer IPT0();
|
|
#endif /* host_block_timer */
|
|
|
|
#ifndef host_release_timer
|
|
extern void host_release_timer IPT0();
|
|
#endif /* host_release_timer */
|
|
|
|
extern void host_timer2_waveform IPT5(unsigned int, a, unsigned long, b,
|
|
unsigned long, c, int, d, int, e);
|
|
#ifdef NTVDM
|
|
void HostPpiState(half_word);
|
|
#else
|
|
extern void host_enable_timer2_sound IPT0();
|
|
extern void host_disable_timer2_sound IPT0();
|
|
#endif
|
|
extern void host_ring_bell IPT1(long, a);
|
|
extern void host_alarm IPT1(long, a);
|
|
extern unsigned long host_idealAlarm IPT0();
|
|
|
|
extern IU32 host_speed IPT1( IU32, ControlMachineNumber );
|
|
|
|
extern void host_timer_init IPT0();
|
|
#ifdef SWIN_MOUSE_OPTS
|
|
extern void host_timer_setup IPT1(BOOL, fast_timer);
|
|
extern void generic_timer_setup IPT1(BOOL, fast_timer);
|
|
#else
|
|
extern void host_timer_setup IPT0();
|
|
extern void generic_timer_setup IPT0();
|
|
#endif /* SWIN_MOUSE_OPTS */
|
|
extern void host_timer_shutdown IPT0();
|
|
extern void host_timer_event IPT0();
|
|
extern void generic_timer_event IPT0();
|
|
|
|
#ifdef HUNTER
|
|
extern word timer_batch_count;
|
|
#endif /* HUNTER */
|
|
|
|
extern int timer_int_enabled;
|
|
extern boolean timer_video_enabled;
|
|
|
|
#define timer_inb(port,val) ((*timer_inb_func) (port,val))
|
|
#define timer_outb(port,val) ((*timer_outb_func) (port,val))
|
|
#define timer_gate(port,val) ((*timer_gate_func) (port,val))
|
|
#define time_tick() ((*timer_tick_func) ())
|
|
|
|
|
|
/*
|
|
* TIMER access functions needed for HW & SW
|
|
*/
|
|
extern void (*timer_inb_func) IPT2(io_addr, port, half_word *, value);
|
|
extern void (*timer_outb_func) IPT2(io_addr, port, half_word, value);
|
|
extern void (*timer_gate_func) IPT2(io_addr, port, half_word, value);
|
|
extern void (*timer_tick_func) IPT0();
|
|
|
|
#ifdef NTVDM
|
|
extern ULONG EoiIntsPending;
|
|
#endif
|