Функции библиотеки с прототипами в conio.h
Управлять местоположением курсора, вводить отдельные символы или строки, выполнять построение окон и сохранять информацию об их состоянии можно на основе функций для работы с консолью. Прототипы функций расположены в файле conio.h. Эти функции хорошо дополняет функция bios(), описание которой имеется в Приложении. Необходимо отметить, что в реализации большинство этих функций используют прерывания уровня bios. Приведем примеры некоторых функций.
void gotoxy(int x, int y)
Установка курсора в точку, определяемую оконной координатой (x, y). Необходимо учитывать, что для данного набора функций левый верхний угол окна имеет координату (1, 1).
int wherex(void)
int wherey(void)
Функции возвращают значения текущих координат расположения курсора.
Функции начинают корректно выполняться, если окно инициализировано. Окно – это логическое понятие, реализуемое на основе структурной переменной типа struct text_info в системе поддержки выполнения Турбо-C-программ ( в исполняющей системе).
void window(int l_t_col, int l_t_row, int r_b_col, int r_b_row)
Первая пара аргументов задает координаты левого верхнего угла экрана, а вторая – правого нижнего. Считается, что левый верхний угол экрана имеет координаты (1, 1).
Информация об активном окне, если оно было инициализировано, может быть получена на основе вызова функции gettextinfo().
void gettextinfo(struct text_info *r)
Вся информация об активном окне копируется из внутренней переменной исполняющей системы Турбо-С-программ в переменную r. Используемый структурный шаблон следующий:
struct text_info{
unsigned char
winleft, wintop, // координаты левого верхнего угла
winright, winbottom, // координаты правого нижнего угла
attribute, normattr, // атрибуты отображения данных в окне
currmode, // режим видеоадаптера
screenheight, // полная высота экрана
screenwidth, // полная ширина экрана
curx, cury; // местоположение курсора
};
Детали выяснения смысла параметров остаются на самостоятельную проработку. Необходимо выяснить, также, какие функции могут быть использованы для получения и восстановления области видеобуфера, соответствующей окну, для каких целей может применяться функция kbhit(), как задаются параметры отображения букв и фон!
TSR-программы
TSR-программы это такие, которые остаются резидентными в основной памяти компьютера после их вызова и реагируют на нажатия клавиш, или на прерывания другого типа.
Структурно TSR-программы состоят из 2-х разделов:
· раздела инициализации и
· прикладной части.
Первый раздел запускается при первоначальной загрузке TSR-программы и модифицирует Таблицу векторов прерываний (ТВП), размещая в ней адрес программы, реализующей прикладную часть. Затем выполняется запрос 0х21 к MS-DOS с функцией 0х31 в регистре AH и программа остается резидентной. После этого – return. Когда выполняется обработка прерывания, соответствующего данному вектору прерывания, то запускается прикладная часть TSR-программы. Она может выполнять любую задачу, - отображать окна, сканировать клавиатуру, а в конце своей работы удалять окно с экрана. Если TSR-программа реализует обмен с консолью, то никаких затруднений не возникает, т.к. все прерывания связанные с экраном и клавиатурой допускают повторную обработку этих прерываний. Остальные функции, но не все, могут привести к разрушению программы и возможно MS-DOS при повторном входе в обработчик прерываний до завершения обработки предыдущего прерывания. Поэтому запросов к MS-DOS из TSR-программы следует по возможности избегать, заменяя запросы выполнением собственных программ.
Таблица векторов прерываний
ТВП размещается в ОЗУ начиная с адреса 0000:0000 и ее размер 1024 байта. Четыре байта отводится под каждый вектор и т.о. всего может быть 256 векторов. Типы прерываний можно посмотреть в книге Брябрина В.М. «Программное обеспечение персональных ЭВМ» и в др. С 0 по 31 – коды прерываний bios, с 32 по 63 – прерывания MS-DOS.
Дата добавления: 2016-05-26; просмотров: 2062;