Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#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);
}