лении координаты У используется следующее соглашение: если У<=63, координата используется так, как она задана в команде, в противном случае она определяется разницей У— 128.

В прил.П! приводится текст относительно несложной программы, с помощью которой Вы сможете разработать собственные векторные символы и включить их в стандартные CHR — файлы.

1.3. МОДУЛЬ ПОДДЕРЖКИ ТЕКСТОВОГО ВВОДА-ВЫВОДА F_GRTEXT

В описываемый ниже модуль F_GrText включено около 20 подпрограмм, большая часть которых имитирует обычный текстовый режим ввода/вывода для программ, работающих с графическим экраном. Используя эти подпрограммы, Вы сможете без особого труда перенести работу ранее созданных диалоговых программ, рассчитанных на стандартные процедуры ввода/вывода Read, ReadLn, Write и WriteLn, в графическую среду. После такого переноса программа сможет инициировать графический режим и работать внешне точно так же, как если бы она работала в текстовом режиме, однако теперь ей станут доступны все процедуры и функции стандартного модуля Graph. Иными словами, модуль позволяет объединить в рамках одной программы два режима одновременно — текстовый и графический.

В основе модуля лежит возможность создания и использования нестандартных драйверов текстовых устройств. Такая возможность связана с «перехватом» обращения процедур Write, WriteLn., Read и ReadLn к физическим устройствам — соответственно к дисплею и клавиатуре. После такого перехвата программа пользователя получает в свое распоряжение текстовую строку, подготовленную для вывода на экран процедурами Write/WriteLn, или может самостоятельно готовить текстовую строку, которая затем будет интерпретироваться стандартными процедурами Read/ReadLn.

С этой целью в исполняемую часть модуля включены функции Graph V/rite и GraphRead. Первая выводит на экран графическими средствами матричное изображение любого символа с учетом текущих атрибутов (цвета символов и цвета фона), а вторая реализует на графическом экране мигающий курсор и эхо—повтор вводимых символов точно так, как это делается в текстовом режиме. Более того, в модуле предусмотрена возможность динамического изменения матричных шрифтов, позволяющая программе менять фактическое разрешение текстового вывода и начертание надписей. Например, при работе с VGA—адаптером программа может использовать 25, 30, 34 или 60 строк по 80 символов в каждой в зависимости от загруженного матричного шрифта.

Поскольку в модуле программными средствами имитируются аппаратные возможности текстового вывода, этот вывод осуществляется значительно медленнее, чем в текстовом режиме, что, впрочем, не является существенным для многих приложений. Во всяком случае, возможность сочетать в рамках одного изображения текстовые и графические данные, на мой взгляд, с лихвой окупает этот недостаток.