В ЭТОМ разделе мы познакомим вас с небольшим пакетом программ на Си, разработанным одним из авторов этой книги 1990 г., когда большинство программистов были вынуждены изобретать разные средства для управления выводом данных из-за их отсутствия в среде MS-DOS. Аналогичные пакеты с меньшими функциональными возможностями вы можете найти в книгах Р. Уинера "Язык Турбо Си" и В. В. Фаронова "Программирование на персональных ЭВМ в среде Турбо Паскаль".
Пакет с условным названием ТЕХТ_ВОХ предназначен для оформления различных окон на экране дисплея и управления выводом текстовых данных в таких окнах. В его состав входит 21 функция для манипуляции со строками и текстовыми окнами, которые реализованы на базе подфункций прерывания BIOS с номером 0х10. Их список приведен в табл. 10.2. Прерывание Oxio обслуживает видеосистему не только в текстовых, но и в графических режимах, и представленные здесь возможности раскрывают примерно четверть этого арсенала.
Таблица 10.2. Функции манипуляции
Формат вызова функции |
Назначение |
||
ask attr (&cs, &cf, sin, sbl) |
Опрос цветовых атрибутов |
||
set attr (cs, cf , in, bl) |
Установка цветовых атрибутов |
||
ask_cur (&x, &y) |
Опрос позиции курсора |
||
set_ cur(x,y) |
Установка курсора в заданную позицию |
||
move_cur(n) |
Перемещение курсора на n позиций |
||
box_abs (rowl, coll, row2, col2, bord, shade) |
Оформление окна |
||
box rel (rowl, coll, rows, cols, bord, shade) |
Оформление окна |
||
cl_rect (row, col, rows, cols, color) |
Очистка окна |
||
s_out (ch) |
Вывод символа в текущую позицию |
||
s_out h (ch, n) |
Вывод n символов по горизонтали |
||
s_out v(ch,n) |
Вывод n символов по вертикали |
||
s_box abs (rowl, coll, row2, col2,ch) |
Заполнение окна символом |
||
s_box rel (rowl, coll, rows, cols, ch) |
Заполнение окна символом |
||
s_out_с (row, col, nc, str) | Вывод строки по центру | ||
s_ out_1 (row, col, nc, str) | Вывод строки с прижимом влево | ||
s_out_ r (row, col, nc, str ) | Вывод строки с прижимом вправо | ||
ask_page ( ) | Опрос активной страницы | ||
set_page (n) | Установка активной страницы | ||
out_err (str) init_txt ( ) | Вывод сообщения об ошибке Инициализация текстового режима | ||
xy_s_out (row, col, ch) |
Вывод символа в заданную позицию |
||