
Добавил:
Medi
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:несколько программ / MAIN_2
.CPP#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <dos.h>
#include <stdlib.h>
void interrupt (*oldhandler)(...);
void MakeSound(char);
unsigned int count;
union REGS regs;
void interrupt handler(...) // for function wait
{
count++;
oldhandler();
}
void interrupt keyb_handler(...)
{
int code;
code = inportb(0x60);
if(code & 0x80)
outportb(0x61,inportb(0x61)&0xfc);
else
MakeSound(code);
oldhandler();
}
void wait(float sec)
{
int number;
oldhandler = getvect(0x1c);
count = 0;
setvect(0x1c, handler);
number= 18 * sec;
while(count < number);
setvect(0x1c, oldhandler);
}
void Piano()
{
oldhandler = getvect(0x9);
setvect(0x9, keyb_handler);
while(inportb(0x60)!=1);
setvect(0x9, oldhandler);
}
void MakeSound(char freq)
{
freq = freq*10;
unsigned i;
union
{
int data;
unsigned char bite[2];
} count;
unsigned char p;
if(freq<18)
freq = 18;
count.data = 1193181 / freq;
outportb(0x43,182); // 10 11 011 0
outportb(0x42,count.bite[0]);
outportb(0x42,count.bite[1]);
p = inportb(0x61);
outportb(0x61,p|3);
}
void movetoxy(int x, int y)
{
regs.h.ah = 2;
regs.h.dh = y;
regs.h.dl = x;
regs.h.bh = 0;
int86(0x10, ®s, ®s);
}
void main(void)
{
char message[]="HEllO! It is demonstration by DF)\0";
int x = 5;
int y = 2;
int i = 0;
sound(2000);
clrscr();
movetoxy(x,y);
while(message[i]!='\0')
{
textcolor(message[i]);
cprintf("%c", message[i++]);
wait(0.1);
}
Piano();
}