#include <dos.h>
#include <stdio.h>
#include <conio.h>

void main(void);
void interrupt far timer(...);

void interrupt (far *oldvect)(...);

// Переменная для подсчета прерываний таймера
volatile long ticks;

void main(void)
{
  // Сбрасываем счетчик
  ticks = 0L;

  // Запоминаем адрес старого обработчика
  // прерывания
  oldvect = _dos_getvect(0x1c);

  // Устанавливаем новый обработчик прерывания
  _dos_setvect(0x1c, timer);

  printf("\nТаймер установлен. Нажмите любую"
	 " клавишу...\n");
  getch();

  // Восстанавливаем старый обработчик прерывания
  _dos_setvect(0x1c,oldvect);
}

void interrupt far timer(...)
{
  // Увеличиваем счетчик прерываний таймера
  ticks++;

  // Если значение счетчика кратно 20,
  // выдаем сигнал на громкоговоритель компьютера
  if((ticks % 20) == 0)
  {
    asm mov bx,0
    asm mov ax, 0E07h
    asm int 10h
  }

  // Вызываем старый обработчик прерывания
  _chain_intr(oldvect);
}

