Информатика и технология программирования


Резидентная программа - всплывающие часы - часть 2



(*KBSAV)(); // по старому вектору


}


// Счетчики тиков и секунд


int clock=0;
long clock1=0;


// Обработчик прерывания по таймеру


void interrupt PLTIME(...)
{
(*TIMSAV)(); // эмуляция прерывания по старому


clock++; // вектору


if (clock==18) // подсчет 18 тиков


{ //


clock1++; // число секунд +1


clock=0;
if (SHO) // вывод часов в формате "=HH:MM:SS"


{
char *p=sss;
*p++ = '=';
p=to10(p,(int)(clock1/3600));
*p++ = ':';
p=to10(p,(int)(clock1/60)%60);
*p++ = ':';
p=to10(p,(int)(clock1%60));
*p=0;
putstr(sss,50,0);
}
}
}


// Основная программа


void main()
{
struct time T;
HIGH=(unsigned)malloc(1); // Верхний адрес сегмента данных


SIZE=(_DS-_CS)+(HIGH &#62&#62 4)+1; // DS-CS - размер сегмента кода


// HIGH &#62&#62 4 - размер сегмента данных


printf("Объем резидента %d KB\n\r",SIZE &#62&#62 6);
gettime(&#38T); // Установить счетчик секунд


clock1=T.ti_sec+T.ti_hour*3600l+T.ti_min*60l;
TIMSAV=getvect(0x08); // сохранить старые вектора


setvect(0x08,PLTIME); // прерывания таймера и


KBSAV=getvect(0x9); // клавиатуры и установить


setvect(0x9,KEYB); // собственные


keep(0,SIZE); // Завершиться в сохранением в памяти


}




Начало  Назад  Вперед



Книжный магазин