C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 keep / k / Библиотечн. функции Borland C++

Функция Осуществляет выход в DOS из программы, оставляя, тем не менее еe резидентной.

Синтаксис          #include<dos.h>
                   void keep(unsigned char status, unsigned size);

Файл, содержащий   dos.h
прототип

Описание           Функция keep осуществляет выход в DOS со  статусом
                   выхода в переменной status. Текущая программа, тем
                   не менее,  остается резидентной.  Длина  программы
                   устанавливается   в  size  параграфов,  и  остаток
                   памяти  освобождается.
                   
                   Функция keep может быть использована для установки
                   резидентных   программ   (TSR).    Функция    keep
                   использует функцию DOS 0x31.

Возвращаемое       Нет.
значение

Переносимость      Функция уникальна для DOS. Функция не совместима с
                   Windows.

Смотрите также     abort, exit.

Пример:

/* ПРИМЕЧАНИЕ:
   Это программа   обработки   прерывания.   Если   вы    попытаетесь
   откомпилировать  ее с включенной проверкой переполнения стека,  то
   вы  не  !!!  получите  правильно  работающей  программы.   Формула
   использованая  в  этой  функции,  вычисляющая  число параграфом не
   обязательно  будет  работать  во  всех  случаях.   Используйте   с
   осторожностью!  Резидентные  программы  являются довольно сложными
   продуктами,  и для них не обеспечивается дополнительная поддержка.
   Дополнительную информацию вы найдете в технической документации по
   DOS */

#include<dos.h>
/* прерывание по таймеру */
#define INTR 0x1c
/* атрибут экрана (голубой или серый) */
#define ATTR 0x7900
/* уменьшить размер стека и локальной памяти, чтобы
   сделать программу меньше */
extern unsigned _heaplen = 1024;
extern unsigned _stklen = 512;

void interrupt (*oldhandler)();

void interrupt handler(void)
{
   unsigned int (far *screen)[80];
   static int count;
   /* для цветного адаптера адрес видеопамяти
      B800:0000, для монохромного B000:0000 */
   screen = MK_FP(0x8000,0);
   /* увеличить счетчик, и взять его по модклю 10 */
   count++;
   count %= 10;
   /* вывести число на экран */
   screen[0][79] = count+'0'+ATTR;
   /* вызвать старую функцию обработки прерывания */
   oldhandler();
}
int main(void)
{
   /* получить адрес текущей программы обработки прерываний
      по таймеру */
   oldhandler = getvect(INTR);
   /* установить свою программу обработки прерывания */
   setvect(INTR,handler);
   /* _psp содержит начальный адрес области памяти, в которой
      расположена ваша программа. Вершина стека определяет
      конец вашей программы. _SS и SP вместе дают конец стека.
      Возможно вам будет нужно добавить локальную память для
      собственных нужд, что делается следующим образом:
      (_SS + ((_SP + локальная память)/16) - _psp) */

   keep(0,_SS+(_SP/16)-_psp);
   return 0;
}