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

#define FREQUENCY 200
#define CYCLES 10000

void main(void);

void main(void) {

	int cnt;

// Во время генерации звука прерывания должны
// быть запрещены.

	_disable();

	_asm {

// Загружаем количество циклов - периодов
// генерируемых импульсов

		mov   dx, CYCLES

// Отключаем громкоговоритель от таймера

		in    al, 61h
		and   al, 0feh

// Цикл формирования периода

sound_cycle:

// Формируем первый полупериод, подаем
// на громкоговоритель уровень 1

		or    al, 2
		out   61h, al

// Формируем задержку

		mov   cx, FREQUENCY

first: loop  first

// Формируем второй полупериод, подаем
// на громкоговоритель уровень 0

		and   al,  0fdh
		out   61h, al

// Формируем задержку

		mov   cx, FREQUENCY

second: loop  second

// Если сформированы не все периоды, переходим
// к формированию следующего периода.

		dec   dx
		jnz   sound_cycle

	}

// Разрешаем прерывания.

	_enable();

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

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

}

