Скачиваний:
37
Добавлен:
01.05.2014
Размер:
1.68 Кб
Скачать
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>


// ‚лЄ«оз Ґ¬ Їа®ўҐаЄг б⥪  Ё гЄ § вҐ«Ґ©

#pragma check_stack( off )
#pragma check_pointer( off )

// ќв® ¬ Єа® ЁбЇ®«м§гҐвбп ¤«п ўл¤ зЁ
//   бЁЈ­ «  ­  ў­гв७­Ё© ¤Ё­ ¬ЁЄ
//   Є®¬ЇмовҐа . €бЇ®«м§гҐвбп ўлў®¤
//   ў д®а¬ вҐ TTY бЁ¬ў®«  BELL (7)
//   зҐаҐ§ ЇаҐалў ­ЁҐ BIOS 10h

#define BEEP() _asm { \
								_asm mov bx,0      \
								_asm mov ax, 0E07h \
								_asm int 10h       \
						  }


void main(void);


// ЋЎкпў«Ґ­ЁҐ Їа®Ја ¬¬л ®Ўа Ў®вЄЁ ЇаҐалў ­Ёп

void _interrupt _far timer(void);

// ќв  ЇҐаҐ¬Ґ­­ п ЇаҐ¤­ §­ зҐ­  ¤«п еа ­Ґ­Ёп
//   бв а®Ј® §­ зҐ­Ёп ўҐЄв®а  ЇаҐалў ­Ёп
//   в ©¬Ґа . Ћ­  ¤®«¦­  Ўлвм Ј«®Ў «м­®©.

void (_interrupt _far *oldvect)(void);

// ЏҐаҐ¬Ґ­­ п ¤«п Ї®¤бзҐв  вЁЄ®ў в ©¬Ґа 

volatile long ticks;


void main(void) {

	ticks=0L;  // ‘Ўа блў Ґ¬ бзҐвзЁЄ вЁЄ®ў в ©¬Ґа 

	oldvect = _dos_getvect(0x1c); // ‡ Ї®¬Ё­ Ґ¬  ¤аҐб
											// бв а®Ј® ®Ўа Ў®взЁЄ 
											// ЇаҐалў ­Ёп

	_dos_setvect(0x1c, timer);    // “бв ­ ў«Ёў Ґ¬ бў®©
											// ®Ўа Ў®взЁЄ

	printf("\n’ ©¬Ґа гбв ­®ў«Ґ­. Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг...\n");

	getch(); // Ћ¦Ё¤ Ґ¬ ­ ¦ вЁп ­  «оЎго Є« ўЁиг

	_dos_setvect(0x1c,oldvect);   // ‚®ббв ­ ў«Ёў Ґ¬ бв ал©
											// ®Ўа Ў®взЁЄ ЇаҐалў ­Ёп
											// в ©¬Ґа 
	exit(0);

}

// ”г­ЄжЁп ®Ўа Ў влў Ґв ЇаҐалў ­Ёп в ©¬Ґа 

void _interrupt _far timer(void) {

	ticks++; // “ўҐ«ЁзЁў Ґ¬ бзҐвзЁЄ вЁЄ®ў в ©¬Ґа 

	// …б«Ё §­ зҐ­ЁҐ бзҐвзЁЄ  вЁЄ®ў Єа в­® 20,
	// ўл¤ Ґ¬ бЁЈ­ « ­  ¤Ё­ ¬ЁЄ Є®¬ЇмовҐа 

	if((ticks % 20) == 0) BEEP();

	// ‚л§лў Ґ¬ бв ал© ®Ўа Ў®взЁЄ ЇаҐалў ­Ёп

	_chain_intr(oldvect);

}
Соседние файлы в папке SETVECT