/**
*.Name         tm_sound
*.Title        Формирование тона заданной длительности
*
*.Descr        Эта функция предназначена для генерации
*              на громкоговорителе тона заданной
*              длительности и частоты.
*
*.Proto        void tm_sound(int freq, int time);
*
*.Params       int sound - частота в герцах;
*              int time  - длительность в тиках
*                          таймера (за одну секунду таймер
*                          тикает 18.2 раза).
*
*.Return       Ничего
*
*.Sample       play.c
**/

#include <stdio.h>
#include <conio.h>
#include "sysp.h"

void tm_sound(int freq, int time) {

	int cnt, i;

// Задаем режим канала 2 таймера

	outp(0x43, 0xb6);

// Вычисляем задержку для загрузки в
// регистр счетчика таймера

	cnt = 1193180L / freq;

// Загружаем регистр счетчика таймера - сначала
// младший, затем старший байты

	outp(0x42, cnt & 0x00ff);

	outp(0x42, (cnt &0xff00) >> 8);

// Включаем громкоговоритель. Сигнал от
// канала 2 таймера теперь будет проходить
// на вход громкоговорителя.

	outp(0x61, inp(0x61) | 3);

// Выполняем задержку.

	tm_delay(time);

// Выключаем громкоговоритель.

	outp(0x61, inp(0x61) & 0xfc);

}

