#if sizeof(int) == 2
#error foo
#endif

#include <math.h>
#include <dos.h>
#include <conio.h>

typedef unsigned long ul;
typedef unsigned int ui;

ul gettimer(void)
{
	register ui i;
	int int8pend;
	disable();
	outportb(0x43,0x04);
	i = inportb(0x40);
	i += inportb(0x40) << 8;
	outportb(0x20,0x0B);
	int8pend = inport(0x20) & 1;
	enable();
	return (i^0xFFFF) | (((*(ul far *)MK_FP(0x40,0x6C))+int8pend) << 16);
}

void testfrq(void)
{
	ul x, empty;
	outportb(0x43,0x34);
	outportb(0x40,0);
	outportb(0x40,0);
	bdos(0xD,0,0);
	cprintf("V-Frequenz: ");
	while((inportb(0x3DA)&0x8));
	while(!(inportb(0x3DA)&0x8));
	disable();
	x = gettimer();
	while((inportb(0x3DA)&0x8));
	while(!(inportb(0x3DA)&0x8));
	x = gettimer() - x;
	enable();
	cprintf("%.2lf Hz.\r\n",1 / (x / 1193680.0));
}
main()
{
    testfrq();
}
