ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.


Структурные флизелиновые обои.

 

Часть 1

            ГРАФИЧЕСКИЙ АДАПТЕР 8514/A ФИРМЫ IBM *
                         Эд Макнирни
Аннотация.
     В статье рассматриваются основные особенности нового дисп-
лейного адаптера 8514/A и цветного монитора 8514 фирмы IBM для
ПЭВМ. Приводятся результаты тестирования производительности
адаптеров 8514/A и VGA, проведенного на моделях 60 и 80 ПЭВМ се-
рии PS/2.
     Одновременно с началом производства персональных компьюте-
ров серии PS/2, объявленного к выпуску фирмой IBM в апреле 1987
года, IBM начала выпуск дисплейного адаптера 8514/A и цветного
дисплея 8514, что явилось второй попыткой фирмы войти в состав
производителей высококачественного графического оборудования.
Первая такая попытка была сделана в 1985 году с выпуском профес-
сионального графического контроллера (PGC) и профессионального
графического дисплея. Попытка не увенчалась успехом ввиду высо-
кой стоимости и недостаточной производительности системы. С того
времени как возможности аппаратных средств машинной графики, так
и требования к ним со стороны пользователей значительно возрос-
ли. Это и послужило стимулом для фирмы IBM в создании дисплейно-
го адаптера для ПЭВМ, значительно превосходящего предшественни-
ков по производительности и разрешающей способности.
      Несмотря на то, что адаптер 8514/A и монитор 8514 работа-
ют  совместно, они могут поставляться и отдельно друг от друга.
Адаптер 8514/A может использоваться  для  отображения  большего
количества  цветов  в  режиме  графического адаптера VGA (Video
Graphic Array) по сравнению с собственно VGA при его  использо-
вании  совместно  с  мониторами 8512 и 8513, разработанными для
ПЭВМ серии PS/2. Монитор 8514 хорош и сам по себе,  однако  его
максимальные возможности раскрываются только при его совместном
использовании с дисплейным адаптером 8514/A.
      В целом, адаптер 8514/A является типичным продуктом фирмы
IBM.  В нем нет особых технических новшеств - другие производи-
тели аппаратуры выпускают  графические  адаптеры  либо  большей
производительности, либо меньшей стоимости. Может быть, главным
достоинством нового адаптера является то, что его выпуск фирмой
IBM привлечет дополнительное внимание потребителей к  высокока-
чественным  графическим средствам, т.к. не покупавшие графичес-
кое оборудование других фирм-производителей пользователи, веро-
ятно,  сочтут  целесообразным  приобрести  графическую  систему
8514, что приведет к расширению рынка графической аппаратуры.
      Адаптер 8514/A предтавляет собой устройство, смонтирован-
ное  на  одной плате, которая может быть установлена на моделях
50, 60 и 80 серии ПЭВМ PS/2. Адаптер подключается в  соответст-
вующее гнездо шины типа "микроканал" (Micro Channel) и соединя-
ется  с монитором посредством 15-штырькового разъема. Подключе-
ние к адаптеру монитора 8514 (с размером экрана  19  дюймов  по
диагонали), позволяет получать на экране изображения с разреше-
________________________________________
* "Pixels with Panache", Ed McNERNEY
                            - 2 -
нием 1024 x 768 пикселов. Стандартный дисплейный адаптер 8514/A
позволяет одновременно отображать на экране до 16 цветов, а при
установке  дополнительной дисплейной памяти - 256 цветов. Цвета
могут выбираться из палитры в 256000 цветов.
      Несмотря на то, что существуют дисплеи и с более высокими
характеристиками,  возможность  функционирования   графического
адаптера  8514/A в режиме 1024 x 768 пикселов, является сущест-
венным шагом вперед по сравнению с адаптером типа VGA,  причем,
без  значительного  увеличения  стоимости аппаратуры. Во многих
системах высококачественной графики стоимость монитора  состав-
ляет  от  половины до двух третей стоимости всей системы. Фирме
IBM удалось существенно снизить стоимость ее новой  графической
системы путем использования монитора с чересстрочной разверткой
и ограничения максимального разрешения до 1024 x 768
пикселов.
     Совместно с дисплейным адаптером  8514/A  могут  использо-
ваться любые типы мониторов ПЭВМ серии  PS/2, а именно: цветные
-  8514, 8512, 8513 и черно-белый 8503. При подключении к адап-
теру 8514/A мониторов 8512 и 8513  обеспечивается  максимальное
разрешение 640 x 480 пикселов с одновременным представлением на
экране  16 либо 256 цветов (см. табл. 1). Для достижения полной
программной совместимости с адаптером VGA, 8514/A  подключается
к расширенному видеовыходу VGA по шине микроканала (см. John T.
Cockerman  "VGA:  Evolutionary Half-Step", PC TECH JOURNAL, ав-
густ 1987, стр. 74). Когда адаптер 7514/A не работает в  режиме
максимального  разрешения, а просто пропускает через себя на
видеомонитор сигналы от встроенного в ПЭВМ адаптера VGA.  Таким
образом,  выходные сигналы, по сути дела, формируются адаптером
VGA, что и гарантирует полную программную совместимость.
      Характеристики дисплейного адаптера 8514/A        Табл. 1
ЙННННННННННННННННННННННННННЛНННННННННННННННННННЛНННННННННННННН»
є                          є Все типы мониторовє     8514     є
є                          є     серии PS/2    є              є
МННННННННННННННННННННННННННОНННННННННННННННННННОНННННННННННННН№
єРазрешение по горизонтали є 640 пикселов      є 1024 пиксела є
єРазрешение по вертикали   є 480 -- " --       є 768  -- " -- є
єРежим сканирования        є все строки кадра  є чересстрочн. є
єЧастота генерации пикселовє 25.17 МГц         є 44.90 МГц    є
єЧастота строк             є 31.47 кГц         є 35.52 кГц    є
єЧастота кадров            є 59.94 Гц          є 43.48 Гц     є
ИННННННННННННННННННННННННННКНННННННННННННННННННКННННННННННННННј
     Адаптер 8514/A (так же как и VGA) обеспечивает формирование
"квадратных" пикселов, т.е. формирование такого растра, где рас-
стояния между двумя соседними пикселами по вертикали и по гори-
зонтали совпадают. Разрешение 1024 x 768, также как и 640 x 480,
дает соотношение 4 пиксела по горизонтали к 3 пикселам по верти-
кали, что совпадает с отношением размера экрана по горизонтали к
размеру по вертикали. Использование "квадратных" пикселов упро-
щает разработку программного обеспечения и позволяет повысить
скорость вывода на экран. С того времени, как был выпущен персо-
нальный компьютер Macintosh (первый персональный компьютер,
обеспечивающей соотношение 4 к 3), пользователи смогли оценить
качество изображения и легкость чтения символьной информации на
экране дисплея, достигаемых применением такого подхода к выбору
разрешения на экране.
                            - 3 -
     Работа  дисплейного адаптера 8514/A в режиме высокого раз-
решения  обеспечивается  специальным  программным  интерфейсом,
транслирующем  поступающие на его вход команды в последователь-
ности команд управления аппаратурой адаптера. Для  того,  чтобы
адаптер  начал или прекратил функционирование в режиме высокого
разрешения, прикладная программа должна сформировать  специаль-
ные запросы начала или прекращения работы в этом режиме.  Адап-
тер использует обращение к специальной пограмме для определения
режима своей работы.
     При  включении  ПЭВМ  адаптер  8514/A является пассивным и
весь вывод на экран производится посредством  встроенного  VGA.
Адаптер переключается на режим высокого разрешения только после
загрузки    программ    вышеупомянутого    интерфейса   (модуль
HDILOAD.EXE типа TSR - terminate-and-stay-resident, т.е.  такая
программа, которая после вызова остается резидентной) и обраще-
ния к интерфейсу со стороны прикладной программы. В конце своей
работы прикладная программа должна выдать на интерфейс команду
на  прекращение  работы  адаптера в режиме высокого разрешения,
после чего адаптер возобновляет функционирование в режиме  VGA.
Т.к.  в  режиме  высокого  разрешения адаптер 8514/A использует
свою внутреннюю память, то после завершения работы в этом режи-
ме полностью восстанавливается состояние  VGA,  предшествующее
переключению 8514/A в режим высокого разрешения.
     Графический  адаптер 8514/A представляет собой мощный гра-
фический процессор с весьма ограниченным набором аппаратно реа-
лизованных функций. Набор функций может быть расширен программ-
ным путем. В функциональном плане адаптер 8514/A  больше  всего
напоминает  одну  из первых графических микросхем NEC7220. Мик-
росхемы, ориентированные на выполнение графических функций, раз-
работанные  позднее,  такие  как  HD63484  (Hitachi),  TMS34010
(Texas  Instruments), представляют собой значительно более мощ-
ные  и  гибкие  графические  устройства  (см.   Ed   McNierney,
"High-Perfomance Graphics: Intel 82786" и"Custom-Tailored
Graphics: TMS34010", PC TECH JOURNAL, июль 1987, стр. 56  и  68
соответственно).  Адаптер  8514/A значительно уступает перечис-
ленным выше устройствам по своим возможностям, хотя и приближа-
ется к ним по скорости рисования. В частности, даже в микрос-
хеме фирмы Hitachi, разработанной одной из  первых,  существует
аппаратная поддержка вывода дуг, чего нет в 8514/A.
                      МОНИТОР 8514
     Монитор 8514 фирмы IBM является первым монитором для ПЭВМ
этой фирмы, работающим в режиме черезстрочной развертки, хотя
такой подход достаточно широко распространен при реализации вы-
сококачественных графических систем. Разрешение, обеспечиваемое
монитором, часто измеряется частотой строк - количеством форми-
руемых каждую секунду строк. Для монитора 8514 эта величина при
768 строках и частоте кадров 60 Гц доложна быть равной 60 кГц.
Вместо того, чтобы при развертке кадра каждый раз выводить на
экран все его строки, в режиме черезстрочной развертки при гене-
рации одного кадра выводятся только его четные строки,а при вы-
воде следующего - нечетные. В результате получим уменьшение
                            - 4 -
частоты вывода строк в два раза, т.к. при выводе каждого кадра
отображается в два раза меньше строк, чем в нем содержится, или,
что то же самое, при одной и той же частоте строк можно увели-
чить количество строк в кадре. Это позволит увеличить разрешение
по вертикали. Как видно из сказанного выше, частота строк может
быть также уменьшена путем снижения частоты кадров.
     При переключении монитора 8514/A с режима 640 x 480 в режим
1024 x 768 используются оба подхода. В режиме 640 x 480 в каждом
кадре отображаются все строки, частота кадров при этом составля-
ет 60 Гц. Теоретически, в режиме черезстрочной развертки разре-
шение может вырасти до 960 строк по вертикали, однако уменьшение
частоты кадров до 30 Гц может привести к тому, что изображение
на экране будет нестабильным - побочный эффект применения черес-
строчной развертки. Ограничением, как это сделано в 8514/A, ко-
личества строк (768 вместо 960) и увеличением частоты кадров до
44 Гц вместе с применением люминофоров с длительным временем
послесвечения, удается избежать появления побочных эффектов . В
результате, фирмой IBM был создан отличный монитор для вывода
изображений, хотя он все же не очень пригоден для применения в
системах автоматизированного проектирования (САПР), при выполне-
нии чертежных работ и т.п.
     Появление побочных эффектов в значительной степени зависит
от условий освещенности, в которых эксплуатируется монитор. В
связи с этим при покупке монитора 8514 рекомендуется проверить
его пригодность для работы в тех условиях освещенности, в кото-
рых предполагается его эксплуатация. В противном случае, приоб-
ретение такого монитора может оказаться дорогостоящей ошибкой.
     Так же как и VGA, адаптер 8514 использует обратную связь от
монитора  для  определения  его типа. Информация, полученная от
монитора используется в начальный момент времени работы адапте-
ра, а в тех случаях, когда монитор не поддерживает режимов  вы-
сокого  разрешения,  служит указанием адаптеру на невозможность
использования таких режимов. Три из 15 контактов  в  соединении
адаптера с монитором используются для определения типа монитора
и либо заземляются, либо остаются незадействованными внутри мо-
нитора. Анализируя поступающую по этим линиям информацию, адап-
тер 8514/A соответствующим образом настраивается на тип исполь-
зуемого монитора.
     Как уже указывалось выше, адаптер 8514/A при работе в  ре-
жиме  VGA просто пропускает через себя сигналы от встроенного в
ПЭВМ VGA. Для подключения монитора  может  быть  использован  и
стандартный  выход VGA при работе 8514/A в режиме высокого раз-
решения.  Это  является  единственной возможностью в ПЭВМ серии
PS/2 подключения двух мониторов:  8514  подключается  к  выходу
адаптера 8514/A, а другой монитор - к стандартному выходу VGA.
                  ИНТЕРФЕЙС С АДАПТЕРОМ
      В  отличие от предыдущих типов дисплейных адаптеров фирмы
IBM  для  8514/A отсутствует описание аппаратного интерфейса с
адаптером - все операции по управлению работой адаптера  8514/A
осуществляются при помощи специального программного интерфейса.
Такое ограничение в использовании адаптера позволяет фирме про-
изводить изменения в аппаратуре вплоть до изменения адресов па-
                            - 5 -
мяти  и портов ввода/вывода без изменений в прикладных програм-
мах. Перечень адресов памяти  и  портов  ввода/вывода  адаптера
8514/A приведен в таблице 2.
     Теоретически, программный интерфейс удобнее аппаратного,
однако на практике это не всегда так, причем как для пользовате-
лей,  так  и  для  разработчиков  системы.  Для  пользователей
это   неудобно   тем,   что   между  прикладной  программой  и
графической аппаратурой появ-
ляется  дополнительная  прос-                           Табл. 2
лойка в виде программного ин-   Адреса памяти и портов вв/выв.
терфейса,  что  не  позволяет  ЙНННННННННННННННННННННННННННННН»
оптимизировать работу адапте-  є Адреса памяти (шестнадцат.)  є
ра для конкретного приложения. є C600:0800  -  C700:0FFF      є
      С  другой  стороны, для  є CA00:0000  -  CA00:07FF      є
разработчиков фирмы возникает  МНННННННННННННННННННННННННННННН№
проблема, подобная той, кото-  є Адреса вв/выв (шестнадцат.)  є
рая возникла при создании ви-  є 100, 101, 102                є
деоинтерфейса в  операционной  є 2E8, 2E9, 2EA, 2EB, 2EC, 2ED є
системе  OS/2 - необходимость  є 3C6, 3C7, 3C8, 3C9           є
придерживаться строго опреде-  є 6E8, 6E9, 6EA, 6EB, 6EC, 6ED є
ленного  программного  интер-  є 7C6, 7C7, 7C8, 7C9           є
фейса.  Но при этом разработ-  є BC6, BC7, BC8, BC9           є
чики  должны  быть  убеждены,  є FC6, FC7, FC8, FC9           є
что   интерфейс  позволит  им  є AE8, AE9, AEA, AEB, AEC, AED є
обеспечить примерно ту же по-  є EE8, EE9, EEA, EEB, EEC, EED є
изводительность системы, что   ИННННННННННННННННННННННННННННННј
и при прямом обращении к аппаратуре. В случае OS/2 обеспечива-
емые функциями VIA операции в алфавитно-цифровом режиме, по-ви-
димому, удовлетворяют этому требованию. Что касается  программ-
ного  интерфейса  к  дисплейному адаптеру 8514/A, это далеко не
так очевидно.
     С точки зрения фирмы, второй недостаток программного интер-
фейса заключается в том, что программный интерфейс может быть
сдублирован другими фирмами применительно к разработанной ими
аппаратуре, тогда как аппаратный интерфейс является сложным, до-
рогим, трудно поддающимся копированию и позволяет легко скрыть
недокументированные возможности аппаратуры. В частности, уже
разработано программное обеспеспечение для графического процес-
сора TMS34010, эмулирующее интерфейс адаптера 8514/A. Многие та-
кие системы будут обладать большей поизводительностью и гиб-
костью в использовании по сравнению с адаптером 8514/A и смогут
составить ему серьезную конкуренцию. Изменения в аппаратуре уве-
личивают стоимость каждой выпущенной единицы аппаратно совмести-
мого интерфейса, тогда как программа должна быть разработана
только один раз. С этой точки зрения, интересно, сколько сможет
продержаться программный интерфейс адаптера 8514/A?
     Подобно стандартному интерфейсу с прикладной программой
(Applications Program Interface - API) операционной системы OS/2
интерфейс с адаптером 8514/A использует механизм вызова функций
для выдачи команд дисплейному адаптеру (описание API может быть
найдено в: Michael Brian Bentley, "A Consistent API", PC TECH
JOURNAL, март 1988, с.78). Т.к. DOS, в отличие от OS/2, не обес-
печивает динамического редактирования связей, для определения
точек входа в программы интерфейса используется механизм прог-
раммных прерываний.
                            - 6 -
     Вместе с адаптером 8514/A поставляется программа
HDILOAD.EXE, которая после ее вызова становится доступной прик-
ладной программе через прерывание 7Fh. Эта программа инициализи-
рует дисплейный адаптер, проверяет его состояние и при обращении
к ней обеспечивает получение ссылки на начало таблицы адресов
точек входа в программы интерфейса. Для получения адреса таблицы
необходимо загрузить в регистр AX значение 105h и выдать преры-
вание с номером 7Fh. При успешном выполнении запроса (если флаг
переноса не установлен) пара регистров CX:DX содержит адрес на-
чала таблицы из 59 адресов точек входа, представленных в виде
"сегмент : смещение". Краткое описание всех функций интерфейса
HDILOAD с дисплейным адаптером приведено в таблице 3.
     Каждая из функций интерфейса принимает в качестве аргумента
далекий указатель на блок параметров, специфичный для каждой
функции программного интерфейса. Обращения к функциям HDILOAD
выполняются в соответствии с соглашениями, принятыми в языке
программирования ПАСКАЛЬ - перед возвратом управления в вызываю-
щую программу параметр удаляется из стека. Если функция возвра-
щает какие-либо значения, то они помещаются в соответствующую
структуру, адрес которой задается в параметрах вызова. Интерфейс
HDILOAD после загрузки занимает 16К оперативной памяти и не мо-
жет быть удален без перезагрузки операционной системы.
     Программный интерфейс адаптера является достаточно простым.
Программисту не приходится выбирать каким образом ему выполнять
ту или иную операцию, - программный интерфейс предоставляет
только один способ ее выполнения. Единственная сложность может
возникнуть на шаге инициализации 8514/A, т.к. здесь необходимо
проверить наличие адаптера, убедиться, в том что загружен прог-
раммный интерфейс и произведены соответствующие установки режи-
мов.
     В большинстве случаев для выполнения таких действий пользо-
вателем может быть написана стандартная программа. В качестве
примера прикладной программы, использующей обращения к 8514/A,
приведена программа на языке C под названием 8514DEMO.C. Эта
программа в начале своего выполнения инициализирует интерфейс с
адаптером, а затем выводит на экран сообщение "Hello, Display
Adapter 8514/A!" с использованием стандартного шрифта 12 x 20.
                ГРАФИКА ВЫСОКОГО РАЗРЕШЕНИЯ
     Адаптер 8514/A обеспечивает высокоуровневый графический ин-
терфейс для вывода на экран прямых линий, геометрических фигур,
текста, загрузки изображения и манипулирования ими, управления
курсором, "вырезанием" частей изображения и закраской, а также
получение параметров текущего режима работы дисплея. Интерфейс
не ориентирован на какие либо конкретные приложения и, что явля-
ется существенным недостатком, не может быть расширен разработ-
чиками других фирм ввиду отсутствия описания аппаратуры адапте-
ра.
     Программный интерфейс 8514/A содержит ряд функций, позво-
ляющих определить текущее состояние и  режим  работы  адаптера,
что дает возможность прикладной программе выбирать соответству-
ющие  действия  в  зависимости от состояния адаптера. Необходи-
мость наличия таких функций вызвана  тем  обстоятельством,  что
                            - 7 -
адаптер  может работать в двух различных режимах по разрешению:
640 x 480 и 1024 x 768 и двух режимах по количеству одновремен-
но представленных на экране дисплея цветов: 16 и 256. Кроме то-
го,  такие  функции  окажутся полезными, если фирмой IBM будут
разработаны новые версии адаптера, допускающие использование  и
каких-либо других графических режимов.
      При  использовании разрешения 1024 x 768 адаптер работает
только в графическом режиме - режиме адресации всех точек экра-
на (all-point-addressable - APA), хотя и позволяет осуществлять
вывод текстовой информации. При указанном разрешении существуют
три  режима  функционирования  адаптера,  различающиеся  только
стандартными размерами символов, выводимых  на  экран  дисплея.
Допускается использование символов в трех форматах, что обеспе-
чивает следующие возможности вывода на экран дисплея:
- 38 строк по 85 символов в строке;
- 54 строки по 128 символов;
- 51 строку по 146 символов.
Во всех операциях над алфавитно-цифровыми строками используются
данные об атрибутах выводимого символа. Формат текстового атри-
бута, за исключением бита мерцания, соответствует формату, при-
нятом в дисплейной станции IBM 3270, чем достигается  совмести-
мость с большими ЭВМ при выводе текстовых данных.
     Несмотря на то, что в настоящий момент не существует версии
HDILOAD для операционной системы OS/2, при разработке интерфейса
принималась во внимание необходимость его адаптации к этой опе-
рационной системе. Так, HDILOAD обеспечивает возможность работы
с буфером состояния задачи, в котором могут быть сохранены теку-
щие параметры и режимы вывода. Прикладная программа может сгене-
рировать запрос к интерфейса с целью определения размеров такого
буфера, затем выделить для него память и выдать запрос на сохра-
нение параметров текущего режима в буфере, либо, если буфер был
уже заполнен ранее - запрос на перевод адаптера в состояние, со-
ответствующее содержимому этого буфера.
     Ввиду того, что буфер состояния задачи не обновляется каж-
дый раз при выводе данных на экран, его наличие не оказывает
влияния на производительность системы. В среде операционной сис-
темы DOS возможность использования буфера состояния может ока-
заться полезной, например, для установки нескольких режимов ри-
сования и быстрого переключения между ними впоследствии. Таким
образом, использование подобных буферов состояния не ограничива-
ется только многозадачными системами.
     Адаптер поддерживает ряд двоичных режимов вывода на экран,
которые в документации называются смешиванием (mixes). При ис-
пользовании таких режимов на результат выполнения операции ока-
зывает влияние не только цвет выводимого объекта, но и текущий
цвет закрашиваемого пиксела. В качестве таких операций использу-
ются обычные операции булевой алгебры AND, OR, XOR (по непонят-
ным причинам отсутствует операция NOT), а также арифметические
операции такие как сложение, вычитание, усреднение и взятие ми-
нимума и максимума, что открывает широкие возможности по управ-
лению процессом вывода. Выполнение таких действий, в отличие от
адаптера VGA, где выполнение операций вывода в режиме смешивания
моделируется программно, обеспечивается аппаратурой адаптера
8514/A, что позволяет повысить скорость вывода.
                            - 8 -
               ОПЕРАЦИИ ГРАФИЧЕСКОГО ВЫВОДА
     Все операции графического вывода, выполняемые адаптером
8514/A, базируются на целочисленной координатной сетке. Исполь-
зование "мировых" координат, так же как и координат, выраженных
в форме с плавающей точкой, не допускается. Несмотря на то, что
диапазон, в котором изменяются значения координат, значительно
меньше, чем возможно закодировать в поле целого типа длиной в 4
байта, абсолютные координаты, поступающие на вход адаптера, дол-
жны быть представлены в виде четырехбайтовых целых. Относитель-
ные координаты, использование которых допускается некоторыми
функциями интерфейса, представляются в формате 8-битового целого
со знаком.
     Координаты при графическом выводе, подаваемые на вход адап-
тера, должны находиться в следующем диапазоне: по оси X - от
-512 до 1535, по оси Y - от -512 до 767. При использовании раз-
решения 640 x 480 диапазон по оси Y составляет [-256, 767]. Как
видно, размер той части координатной плоскости, которая появля-
ется на экране, меньше размера всей координатной плоскости. При
таком подходе прямоугольники, толстые линии и др. могут частично
выходить за пределы экрана без появления не поместившейся части
с противоположной стороны экрана.
     Программами интерфейса обеспечиваются действия по выводу
прямых линий, включая вывод линии в соответствии с ранее подго-
товленным пользователем образцом закраски, а также вывод линий
различной толщины. При выводе прямых могут использоваться 8
стандартных образцов закраски и образец, задаваемый пользовате-
лем, каждый длиной 48 пикселов. Что касается толщины линий, то
здесь выбор сильно ограничен - допускается использование линий
только толщиной в 1 или 3 пиксела и, кроме того, не решены проб-
лемы концов линий и их соединения.
     Вывод толстых линий заключается в проведении двух дополни-
тельных линий по обеим сторонам от исходной. При этом не гаран-
тируется, что эти линии не будут частично перекрываться, в связи
с чем этот метод применим только в случаях полной перекраски об-
ласти экрана, занимаемой толстой линией (т.е. в режиме замены).
При выводе с применением операций смешивания, например XOR, вли-
яние линий друг на друга приводит к значительным искажениям. В
результате возможность вывода толстой линии средствами адаптера
практически не используется. В интерфейсе отсутствуют примитивы
вывода окружностей, дуг и т.п.; поэтому при выполнении таких
действий приходится пользоваться точным, но очень медленным ме-
тодом вывода по одному пикселу, либо более быстрым, но недоста-
точно точным методом аппроксимации кривой отрезками прямых.
               ОПЕРАЦИИ ЗАКРАСКИ И КОПИРОВАНИЯ
     Интерфейс не содержит явной команды закраски многоугольни-
ка, однако многоугольник может быть задан и закрашен путем ис-
пользования команд адаптера "Начать закрашиваемую область" и
"Закончить закрашиваемую область". Между этими двумя командами
любые замкнутые фигуры, сконструированные при помощи команд вы-
вода прямых, прямоугольников, а также команд перемещения на эк-
ране фрагмента изображения, будут закрашены в соответствии с те-
кущим образцом.
     Образцы задаются пользователем, их размеры могут находиться
в пределах от 1 x 1 до 32 x 32 пиксела. Каждый образец может
быть либо цветным, либо монохромным. При использовании монохром-
ных   образцов,   закраска   производится   текущими   цветами
                            - 9 -
фона и закраски. Цветные образцы (до 8 бит на пиксел) использу-
ются  без изменений. Для вывода закрашенного прямоугольника мо-
жет применяться специальная команда,  что  позволяет  выполнить
данную операцию быстрее.
     Операции копирования фрагмента изображения позволяют пере-
мещать блоки изображений по экрану, копировать их в основную па-
мять ПЭВМ либо из основной памяти. Структура команд для выполне-
ния такой операции достаточно сложна. Вначале выполняется одна
из нескольких возможных команд запроса на копирование из основ-
ной памяти в дисплейную или наоборот, после чего следует коман-
да, посредством которой передается адрес буфера, из которого или
в который будет производиться копирование. Вторая команда может
быть заменена командой перемещения блока изображения по экрану -
адаптер осуществляет проверку на пересечение исходного и резуль-
тирующего блоков изображения, после чего выбирает соответствую-
щий алгоритм выполнения операции.
      Изображение-источник может быть как  многоцветным  так  и
монохромным. При выполнении операции нули и единицы монохромно-
го битового образа заменяются текущими цветами фона и закраски.
      Если  блок изображения переносится в другую область экра-
на, исходное изображение может  быть  "объединено"  применением
операций  смешивания  с изображением в той области экрана, куда
должен быть помещен исходный блок в результате выполнения  опе-
рации. При чтении из дисплейной памяти в основную никакие уста-
новки  режимов смешивания не оказывают влияния на результат вы-
полнения операции.
                   УПРАВЛЕНИЕ ПАЛИТРОЙ
     В адаптере 8514/A для выбора цветовой палитры используется
набор из 256000 цветов (18 бит). Установленная в 8514/A палитра
не зависит от палитры, используемой встроенным в ПЭВМ VGA. При
работе адаптера в режиме VGA все установки палитры, сделанные
базовой системой ввода/вывода применительно к встроенному VGA,
дублируются адаптером 8514/A и, следовательно, никаких проблем,
связанных с установкой палитры не возникает. Как только 8514/A
переключается в режим графики высокого разрешения, все установки
палитры теряют свою силу, что влечет за собой необходимость яв-
ного ее задания специальными командами интерфейса. При возврате
к режиму VGA все прежние установки восстанавливаются.
     Цветовая палитра является глобальным ресурсом, а не частью
состояния задачи. Если для прикладной программы в многозадачной
среде требуется установка собственной палитры, то она должна
сохранить текущую палитру, установить новую, а в конце своего
выполнения восстановить старую палитру.
                         ВЫВОД ТЕКСТОВ
     В адаптере 8514/A вывод текстов может осуществляться в двух
режимах, которые можно условно назвать графическим и алфавит-
но-цифровым. В графическом режиме символы могут задаваться либо
битовым образом, либо в векторном виде и могут размещаться в
произвольном месте экрана. Символы, представленные битовыми об-
разами могут, быть как монохромными, так и цветными. При выводе
на экран символьной информации, так же как и при выводе изобра-
жений, допускается применение операций смешивания. Если символы
представлены в виде битовых образов, предоставляется возможность
их пропорционального размещения на экране. Расстояние между сим-
волами задается специальной таблицей.
                            - 10 -
     Не допускается поворот символов, их усечение или какие-либо
другие преобразования над ними, что предполагает необходимость
использования нескольких типов шрифтов, задаваемых либо в век-
торном виде, либо битовыми образами. Поворот символов в форме
битовых образов представляет собой трудную задачу, в связи с чем
мало кто ожидает наличие такой возможности в адаптерах класса
8514/A. Что касается шрифтов в векторной форме, то они специаль-
но создаются с той целью, чтобы символы можно было поворачивать
на произвольный угол и масштабировать. Отсутствие в адаптере
8514/A возможности выполнения подобных действий над символами в
векторной форме является существенным недостатком и делает нали-
чие такого представления практически не нужным.
     В алфавитно-цифровом режиме весь экран разбивается на ячей-
ки, называемые знакоместами, в которые и помещаются выводимые
символы. Этот режим используется для моделирования алфавит-
но-цифровых дисплеев, а также для быстрого вывода текстов на эк-
ран. В один и тот же момент времени могут быть активными до че-
тырех 256-символьных шрифтов, т.е. каждый отображаемый символ
может быть выведен на экран с использованием любого из этих
шрифтов. Ввиду того, что при выводе символа допускается примене-
ние операций смешивания после чего считывание символа с экрана
становится невозможным, символы могут только выводиться на экран
и не могут быть с него считаны.
     Символы на вход адаптера поступают либо в виде пары <атри-
бут,код символа> (как это делается в цветном графическом адапте-
ре - CGA) или в 4-байтовом формате IBM 3270. Использование
4-байтового формата позволяет осуществлять независимый выбор
шрифта для каждого символа и обеспечивает более широкие возмож-
ности управления выводом. Для обоих форматов сами шрифты хранят-
ся в основной памяти ПЭВМ и управление их местоположением должно
осуществляться прикладной программой. Адаптер не сохраняет ин-
формацию о выводимом на экран символе. Для него вывод символа на
экран представляется просто операцией рисования, в связи с чем
изменение цветов символов или шрифта после вывода символа на эк-
ран не оказывает на его изображение никакого влияния. Для изме-
нения изображения символа на экране необходимо повторно выпол-
нить операцию вывода этого символа на экран.
                      ДРУГИЕ ОПЕРАЦИИ
     Адаптер 8514/A обеспечивает выполнение целого ряда других
операций, используемых при разработке прикладного программного
обеспечения. Аппаратура позволяет выполнять операцию "вырезания"
прямоугольной области изображения на экране, когда при выводе
изображения на экране появляются только пикселы, лежащие внутри
заданной прямоугольной области экрана. Если задан режим выреза-
ния, при интерпретации некоторой команды, аппаратурой генериру-
ются все пикселы определяемые значениями параметров команды, а
выводятся на экран только пикселы из заданной прямоугольной об-
ласти. Поэтому если такой прямоугольник мал, вывод будет осущес-
твляться достаточно медленно. В этом случае рекомендуется за-
давать такие значения параметров в команде вывода, чтобы число
избыточных действий по генерации пикселов сводилось к минимуму.
                            - 11 -
      Перечень функций дисплейного адаптера 8514/A     Табл. 3
ЙНННННННННЛННННННННННННННННННННННННННННННННННННННННННННННННННН»
є Функция є                 Назначение                        є
МНННННННННОННННННННННННННННННННННННННННННННННННННННННННННННННН№
є HLINE   є Провести ломаную, заданную абсолютными координа-  є
є         є тами                                              є
є HCLINE  є Провести ломаную, заданную абсолютными координа-  є
є         є тами, начиная с текущей позиции на экране         є
є HRLINE  є Провести ломаную, заданную в относительных коор-  є
є         є динатах, начиная с точки, заданной абсолютными    є
є         є координатами                                      є
є HRCLINE є Провести ломаную, заданную в относительных коор-  є
є         є динатах, начиная с точки, определяемой текущей    є
є         є позицией на экране                                є
є HBAR    є Начать закрашиваемую область                      є
є HEAR    є Закончить закраску области                        є
є HRECT   є Вывод закрашенного прямоугольника                 є
є HMRK    є Вывод маркера в заданной абсолютной позиции       є
є HCMRK   є Вывод маркера в текущей позиции                   є
є HBBW    є Задание абсолютной позиции начала области, в      є
є         є которую будет производиться копирование           є
є HCBBW   є Задание относительной позиции начала области, в   є
є         є которую будет производиться копирование           є
є HBBR    є Задание абсолютной позиции начала копируемой      є
є         є области                                           є
є HBBCHN  є Копирование из/в основную память                  є
є HBBC    є Копирование области дисплейной памяти в дисплей-  є
є         є  ную память                                       є
є HOPEN   є Инициализировать интерфейс дисплейного адаптера   є
є HCLOSE  є Прекратить работу интерфейса дисплейного адаптера є
є HCSP    є Установить текущую позицию экрана в позицию,      є
є         є заданную абсолютными координатами                 є
є HQCP    є Запрос к адаптеру на получение координат текущей  є
є         є позиции                                           є
є HQDFPAL є Запрос к адаптеру на получение цветов текущей     є
є         є палитры                                           є
є HINIT   є Инициализация буфера состояния задачи             є
є HSYNC   є Установить параметры адаптера в соответствии со   є
є         є значениями из буфера состояния задачи             є
є HINT    є Ожидание вертикального обратного хода луча        є
є HSMODE  є Установить режим работы дисплейного адаптера      є
є HQMODE  є Определение режима работы дисплейного адаптера    є
є HQMODES є Определение всех режимов, в которых может исполь- є
є         є зоваться дисплейный адаптер                       є
є HEGS    є Очистка экрана                                    є
є HSGQ    є Задание типа выводимой линии                      є
є HSHS    є Задание прямоугольной области вывода на экране    є
є HLDPAL  є Загрузка цветовой палитры                         є
є HSPAL   є Сохранение цветовой палитры                       є
є HRPAL   є Восстановление цветовой палитры                   є
є HSLPC   є Сохранение образца для вывода линии               є
є HRLPC   є Восстановление образца вывода линии               є
є HSBP    є Управление битовыми плоскостями (маскирование,    є
є         є разрешение отображения)                           є
ИНННННННННКНННННННННННННННННННННННННННННННННННННННННННННННННННј
                            - 12 -
                                           Продолжение табл. 3
ЙНННННННННЛННННННННННННННННННННННННННННННННННННННННННННННННННН»
є Функция є                 Назначение                        є
МНННННННННОННННННННННННННННННННННННННННННННННННННННННННННННННН№
є HQCOORD є Определение типа координат                        є
є HSCOORD є Задание типа координат                            є
є HESC    є Прекратить работу адаптера                        є
є HQDPS   є Определить размер буфера состояния задачи         є
є HSMARK  є Установить форму маркера                          є
є HSPATT  є Задание образца закраски                          є
є HSPATTO є Установить точку начала закраски для текущего     є
є         є образца                                           є
є HSLT    є Задание текущего типа линии                       є
є HSLW    є Задание текущей толщины линии                     є
є HSCOL   є Задание текущего цвета вывода                     є
є HSBCOL  є Задание текущего цвета фона                       є
є HSMX    є Режим выполнения операции вывода на экран         є
є         є (операции смешивания)                             є
є HSCMP   є Установить регистр сравнения цвета                є
є HSCS    є Задание шрифта                                    є
є HCHST   є Вывести текст с заданной абсолютной позиции       є
є HCCHST  є Вывести текст, начиная с текущей позиции          є
є HXLATE  є Назначить таблицу индексов цветов для текста      є
єABLOCKMFIє Вывод символов в "алфавитно-цифровом" режиме      є
єABLOCKCGAє Вывод символов в "алфавитно-цифровом" режиме      є
є         є в формате CGA                                     є
є AERASE  є Очистка знакоместа                                є
є ASCROLL є Скроллинг                                         є
є ACURSOR є В "алфавитно-цифровом" режиме установить позицию  є
є         є курсора                                           є
є ASCUR   є Установить форму курсора "алфавитно-цифрового"    є
є         є режима                                            є
є ASFONT  є Задание шрифта для "алфавитно-цифрового" режима   є
є AXLATE  є Задание таблицы цветов символов в "алфавитно-     є
є         є цифровом режиме                                   є
ИНННННННННКНННННННННННННННННННННННННННННННННННННННННННННННННННј
     В 16-цветном режиме при разрешении 640 x 480 в адаптере мо-
гут храниться две дисплейные страницы. В каждый момент времени
на экране отображается только одна страница, хотя вывод может
производиться в любую из них. Возможность хранения двух страниц
в памяти адаптера обуславливается наличием механизмов разреше-
ния/запрета записи и отображения битовых плоскостей: любой набор
битовых плоскостей может быть защищен от изменения и любой набор
битовых плоскостей может быть отключен при выводе содержимого
дисплейной памяти на экран.
     Адаптер 8514/A особенно удобно применять в тех случаях,
когда для достижения различных зрительных эффектов используется
маскирование битовых плоскостей. Прикладная программа может по-
местить в каждую из 8 битовых плоскостей отдельное изображение,
а затем, используя маскирование, выводить их на экран по одному
(в монохроме). В некоторых приложениях может оказаться целесооб-
разным использовать 128-цветные изображения (для этого потребу-
ются 7 битовых плоскостей), а в восьмой битовой плоскости могут
быть размещены сообщения контекстно-зависимой подсказки. При об-
ращении к экрану подсказки отключаются первые 7 битовых плоскос-
тей и дается разрешение на вывод восьмой битовой плоскости. Пос-
ле окончания работы в режиме подсказки производятся обратные
действия.
                            - 13 -
                  ПРОИЗВОДИТЕЛЬНОСТЬ СИСТЕМЫ
     Ввиду отсутствия информации об аппаратном интерфейсе адап-
тера, трудно установить какие действия при формировании и выводе
изображения на экран выполняются аппаратурно, а какие программ-
ным путем. Поэтому оценка производительности системы является не
простой задачей. Для получения информации о производительности
собственно аппаратуры адаптера, были проведены измерения скорос-
ти работы системы на IBM PS/2 модели 60 с тактовой частотой 10
МГц и на PS/2 модели 80 с частотой 20 МГц. При расчете реальной
производительности системы всегда необходимо учитывать наличие
программного интерфейса к адаптеру 8514/A.
                   СКОРОСТЬ ВЫВОДА
     Для тестирования использовалась программа 8514TEST.C, дос-
тупная по сети PCTECH. Содержащиеся в этой программе тесты раз-
работаны скорее с целью изучения работы системы, а не для изме-
рения ее производительности. При оценке производительности сис-
темы необходимо проанализировать временные характеристики всех
графических примитивов адаптера, тогда как программа 8514TEST.C
может быть использована для тестирования только некоторых, хотя
и наиболее распространенных, графических операций. В каждом тес-
те дважды выполняются одни и те же действия: в цикле без всяких
задержек между командами интерфейса и в таком же цикле, только с
временными задержками между командами. Тест выполнялся на моде-
лях 60 и 80 PS/2. В результате были получены не только некоторые
оценки производительности, но и выявлены некоторые аспекты взаи-
модействия программ интерфейса с аппаратурой адаптера.
     При выполнении таких операций, когда программный интерфейс
должен выполнить значительный объем подготовительной работы, вы-
дать команду аппаратуре и, в то время как адаптер отрабатывает
команду, передать управление прикладной программе, следует ожи-
дать существенно различной производительности для этих двух ти-
пов тестов. Если подобные команды быстро следуют одна за другой,
то в то время, когда адаптер отрабатывает предыдущую команду,
центральный процессор PS/2 ведет подготовительные действия для
выполнения следующей команды адаптера. Такой параллелизм в вы-
полнении должен выявить увеличение производительности системы
при последовательном выполнении операций по сравнению с произво-
дительностью, достигаемой при интерпретации отдельных команд
дисплейного адаптера.
      Ниже приводится описание использованных в процессе тести-
рования системы операций. Каждая операция выполнялась в четырех
режимах:  замена  пикселов на экране соответствующими пикселами
выводимого изображения, использование при выводе на экран  опе-
рации XOR (исключающее ИЛИ), операции сложения и  усреднения  с
содержимым экрана.
- Вывод  горизонтальных  линий.  Весь экран заполнялся горизон-
  тальными линиями.  Этот тест позволяет измерить  максимальную
  скорость вывода линий на экран.
- Вывод вертикальных линий. Весь экран заполнялся вертикальными
  линиями.  Скорость вывода таких линий может быть примерно та-
  кой же как и скорость вывода произвольно направленных  линий.
                            - 14 -
  Однако,  можно было бы ожидать, что процесс вывода вертикаль-
  ных линий оптимизируется аппаратурой адаптера. Если при выво-
  де вертикальных и произвольно направленных линий не будут вы-
  явлены различия в скорости вывода, то из этого  будет  следо-
  вать, что никакие действия по оптимизации вывода вертикальных
  линий в аппаратуре не предусмотрены.
- Очистка  экрана  -  закраска всего экрана одним цветом.  Этот
  тест  позволяет определить максимальную  скорость  обновления
  экрана.
- Вывод  длинных  произвольно  направленных  линий -  выводится
  10000  линий длиной  768 пикселов. Этот тест позволяет изме-
  рить производительность системы при выводе  произвольно  нап-
  равленных  линий и сравнить ее со скоростью вывода вертикаль-
  ных линий.
- Вывод произвольно направленных линий средней длины - выводит-
  ся 10000 линий длиной  40 пикселов. Использование таких  ли-
  ний  является  типичным  при выполнении чертежных работ. Этот
  тест наиболее точно моделирует производительность  системы  в
  реальных приложениях.
- Вывод  произвольно  направленных  коротких  линий.  Выводится
  10000 линий, каждая длиной  4 пиксела. Этот  тест  позволяет
  оценить  время, затрачиваемое интерфейсными программами на вы-
  полнение подготовительных действий  для  вывода  линии,  т.к.
  время,  затрачиваемое  адаптером  на собственно вывод линии,
  в данном случае ничтожно мало.
- Вывод произвольных закрашенных  прямоугольников  -  выводится
  1000  закрашенных  прямоугольников,  что позволяет определить
  максимальную скорость вывода пикселов.
      Для  более  точной  оценки  производительности   адаптера
8514/A на ПЭВМ со встроенным адаптером VGA был разработан  спе-
циализированный программный интерфейс VGALOAD.COM к VGA.  Прог-
раммами  этого  интерфейса моделируется небольшая часть функций
интерфейса адаптера 8514/A применительно к VGA. Такой тест поэ-
воляет провести сравнительный анализ адаптеров  8514/A  и  VGA.
Отметим,  что  программы  интерфейса  VGALOAD были подготовлены
так, чтобы оптимизировать по времени  выполнение  перечисленных
выше  операций.  Если  бы  был реализован программный интерфейс
полностью моделирующий набор операций 8514/A, то его производи-
тельность была бы несколько ниже производительности VGALOAD.
     Результаты сравнительного анализа приведены в табл. 4 и по-
казывают, что адаптер 8514/A существенно превосходит по своей
производительности VGA: при выводе горизонтальных прямых произ-
водительность 8514/A примерно в 2 раза выше чем у VGA, а при вы-
воде длинных произвольно направленных прямых - примерно в 100
раз. Общая производительность адаптера 8514/A при выполнениии
различных операций изменяется в довольно широком диапазоне.
      Все функции вывода, как это было сказано выше, тестирова-
лись  в четырех режимах: изменения, XOR и суммирование с содер-
жимым экрана, а также взятие среднего от записываемого значения
и содержимого соответствующего пиксела на экране. Теоретически,
скорость вывода в режиме замены должна быть примерно в два раза
выше чем в остальных режимах. Отличие состоит в том, что в этих
трех режимах необходимо сначала прочитать содержимое дисплейной
памяти, а затем обратно записать полученное в результате выпол-
нения операции значение в память и, следовательно, для выполне-
                            - 15 -
ния операции требуются два обращения к памяти. На самом же деле
в режиме изменения также используются два обращения к памяти.
При выводе произвольно направленно прямой для замены одного пик-
села в байте необходимо считать требуемый байт из памяти, моди-
фицировать его и снова записать в память адаптера. Единственным
исключением может быть случай, когда допускается маскирование
памяти, что дает возможность осуществлять запись в память без
предварительного чтения ее содержимого.
      При  выводе  вертикальных линий, произвольно направленных
линий, произвольных прямоугольников и закраске  экрана  адаптер
показывает большую производительность в режиме замены. Это наб-
людение  согласуется с количеством требуемых обращений к памяти
для различных режимов выполнения операции, хотя скорость вывода
в режиме замены, ввиду необходимости выполнения  подготовитель-
ных  действий  перед  выдачей соответствующей команды адаптеру,
возрастает  менее  чем в два раза. Во всех четырех режимах ско-
рость вывода коротких линий примерно одинакова. Аналогичное ут-
верждение справедливо и для линий средней длины. При этом  ско-
рость  вывода линий средней длины в 10 раз выше скорости вывода
коротких линий. Анализ результатов показывает,  что  количество
линий,  которые могут быть выведены за единицу времени, практи-
чески не зависит от их протяженности, а, т.к. количество пиксе-
лов  в  коротких линиях и линиях средней длины различается в 10
раз, то при выводе коротких линий соответственно уменьшается  и
производительность  системы,  измеренная в количестве выводимых
пикселов за одну секунду.
      Линейное уменьшение скорости вывода пикселов при уменьше-
нии длины линии говорит о том, что возможности аппаратуры адап-
тера используются не в полной мере. В большинстве случаев, фак-
тором, ограничивающим производительность системы  является  не-
достаточно  высокая  скорость функционирования программного ин-
терфейса, вследствие чего, независимо от длины  линии,  система
затрачивает на ее вывод примерно одно и то же время. Этот вывод
подтверждается также тем наблюдением, что скорость вывода линий
средней длины и коротких линий, а также длинных линий с неболь-
шими углами наклона возрастает в два раза при переходе от моде-
ли 60 к модели 80. Т.к. скорость  работы  адаптера  8514/A  при
этом  не  изменяется, весь прирост производительности можно от-
нести за счет ускорения работы интерфейсных программ. Подытожи-
вая сказанное выше, можно заключить, что программный  интерфейс
адаптера  8514/A является наиболее узким местом, ограничивающим
общую производительность графической системы.
      Тестирование  графического  адаптера VGA с использованием
программного интерфейса VGALOAD не привело к каким-либо  неожи-
данным  результатам,  за исключением  различий в производитель-
ности при выводе горизонтальных линий, произвольных прямоуголь-
ников и очистки экрана в режиме исключающего ИЛИ.  Т.к.  в  VGA
аппаратно реализованы возможности выполнения операций в режимах
замены  и исключающего ИЛИ (однако, отсутствует аппаратная реа-
лизация режимов суммирования и усреднения), то в обоих этих ре-
жимах производительность системы при выполнении операций,  тре-
бующих  большого количества обращений к памяти, примерно одина-
кова. Тестирование системы не  выявило  каких-либо  различий  в
производительности  при  выводе коротких и длинных линий, чего,
собственно, и следовало ожидать, т.к. в данном случае, скорость
                            - 16 -
             Результаты тестирования адаптеров         Табл. 4
ЙНННННННННННННННННННННННННЛНННННННННННННННННЛННННННННННННННННН»
є                         є 10МГц модель 60 є 20МГц модель 80 є
є                         є  8514/A    VGA  є  8514/A    VGA  є
МНННННННННННННННННННННННННОНННННННННННННННННОННННННННННННННННН№
є ГОРИЗОНТАЛЬНЫЕ ЛИНИИ    є                 є                 є
є Замена                  є   6.631   3.024 є   6.659   3.802 є
є XOR                     є   6.598   3.042 є   6.598   3.779 є
є Сумма                   є   6.631   1.427 є   6.598   1.865 є
є Среднее                 є   6.598   1.416 є   6.598   1.845 є
є ВЕРТИКАЛЬНЫЕ ЛИНИИ      є                 є                 є
є Замена                  є   4.206    .163 є   4.345    .258 є
є XOR                     є   2.604    .213 є   2.562    .258 є
є Сумма                   є   2.553    .158 є   2.553    .258 є
є Среднее                 є   2.562    .146 є   2.553    .257 є
є ОЧИСТКА ЭКРАНА          є                 є                 є
є Замена                  є  25.534   3.213 є  25.700   4.000 є
є XOR                     є  13.284   3.213 є  12.997   3.938 є
є Сумма                   є  13.020   1.471 є  13.240   1.903 є
є Среднее                 є  13.020   1.456 є  13.284   1.875 є
є ПРОИЗВОЛЬНО НАПРАВЛЕННЫЕє                 є                 є
є ДЛИННЫЕ ЛИНИИ           є                 є                 є
є Замена                  є   4.062    .042 є   5.210    .090 є
є XOR                     є   3.474    .041 є   3.688    .083 є
є Сумма                   є   3.727    .039 є   3.960    .079 є
є Среднее                 є   3.360    .039 є   3.566    .080 є
є ПРОИЗВОЛЬНО НАПРАВЛЕННЫЕє                 є                 є
є ЛИНИИ СРЕДНЕЙ ДЛИНЫ     є                 є                 є
є Замена                  є    .241    .035 є    .503    .075 є
є XOR                     є    .240    .035 є    .503    .072 є
є Сумма                   є    .231    .034 є    .478    .067 є
є Среднее                 є    .238    .033 є    .494    .068 є
є ПРОИЗВОЛЬНО НАПРАВЛЕННЫЕє                 є                 є
є КОРОТКИЕ ЛИНИИ          є                 є                 є
є Замена                  є    .022    .014 є    .045    .031 є
є XOR                     є    .020    .014 є    .042    .030 є
є Сумма                   є    .019    .013 є    .040    .027 є
є Среднее                 є    .020    .015 є    .043    .032 є
є ПРОИЗВОЛЬНЫЕ            є                 є                 є
є ПРЯМОУГОЛЬНИКИ          є                 є                 є
є Замена                  є  25.413   2.359 є  25.413   3.245 є
є XOR                     є  12.964   2.477 є  12.866   3.313 є
є Сумма                   є  12.865   1.249 є  12.865   1.701 є
є Среднее                 є  12.924   1.263 є  12.924   1.711 є
ИНННННННННННННННННННННННННКНННННННННННННННННКНННННННННННННННННј
вывода определяется не временем обращения к памяти, а эффектив-
ностью алгоритма рисования линии.
      Наибольшая производительность адаптера 8514/A достигается
при  очистке  экрана  -  закраске всего экрана одним цветом (25
миллионов пикселов в сек.), что обуславливается тем, что в этом
случае, все действия выполняются аппаратно. Т.к. скорость рабо-
ты VGA определяется скоростью работы процессора, то при  выпол-
нении  многих операций на модели 60 с применением 8514/A дости-
гается значительно более высокий относительный прирост произво-
                            - 17 -
дительности по сравнению с  VGA,  чем  соответствующий  прирост
производительности для модели 80.
      Единственным интерфейсом к дисплейному адаптеру 8514/A  в
настоящее время является интерфейсная программа HDILOAD и, поэ-
тому, изменение в аппаратуре адаптера не должны оказывать влия-
ния  на прикладные программы, что является существенным преиму-
ществом использования программного интерфейса. С другой  сторо-
ны,  наличие такого интерфейса не позволяет создавать графичес-
кие системы с максимально  высокой  производительностью.  Таким
образом,  платой за независимость прикладной программы от аппа-
ратуры является потеря производительности, а для многих  опера-
ций 8514/A эта плата является высокой.
      Исследования  по непосредственному управлению аппаратурой
адаптера 8514/A показали, что скорость вывода линий может  быть
повышена  примерно в 5 раз. Из всего сказанного выше можно сде-
лать вывод, что фирме IBM следовало бы  опубликовать  структуру
аппаратного интерфейса к адаптеру или, по крайней мере, обеспе-
чить,  вместо интерфейса HDILOAD, эффективными драйверами адап-
тера операционную систему OS/2 и Microsoft Windows.
                ПРЕИМУЩЕСТВА И НЕДОСТАТКИ
     В целом, графический адаптер 8514/A представляется тщатель-
но спроектированной системой, производительность которой соот-
ветствует производительности систем подобного класса. Существен-
ным недостатком является отсутствие описания структуры аппарат-
ного интерфейса, что оставляет для пользователя единственную
возможность при обращении к адаптеру использовать программный
интерфейс, предоставляемый фирмой IBM. Это обстоятельство не по-
эволяет добиться от системы максимально возможной производитель-
ности. Следует отметить, что даже при таком ограничении адаптер
8514/A показывает значительно более высокую производительность,
чем VGA.
     При разработке приложений с использованием адаптера 8514/A
для достижения максимальной производительности следует учитывать
его сильные и слабые стороны. Адаптер обеспечивает высокую ско-
рость вывода закрашенных прямоугольников и выполнения операций
копирования дисплейной памяти. Достаточно эффективно выполняются
также операции закраски образцами и вывод текстовой информации
и, кроме того, адаптером обеспечивается гибкое управление маски-
рованием битовых плоскостей и цветовой палитрой. К слабым сторо-
нам системы можно отнести недостаточную эффективность вывода ге-
ометрических фигур ввиду отсутствия примитивов вывода дуг и сла-
бой проработкой вопросов вывода толстых линий и их сопряжения.
     Появление дисплейного адаптера 8514/A отражает возросший
интерес фирмы IBM к системам высококачественной графики примени-
тельно к ПЭВМ. Этот адаптер, безусловно, является наиболее мощ-
ной графической системой для персональных компьютеров как по
разрешающей способности, так и по количеству одновременно предс-
тавленных на экране цветов. Хотя в настоящее время отсутствуют
прикладные программные системы, ориентированные на использование
графического адаптера 8514/A, появление таких систем следует
ожидать в ближайшее время.
      В заключение  отметим,  что  цена  графического  адаптера
8514/A  составляет  1290  долларов,  а цветного мониторв 8514 -
1550 долларов.
                            - 18 -
                Листинг программы 8514DEMO.C
/* Демонстрация работы дисплейного адаптера 8514/A*/
/*Необходимы:ibmafi.h, calafi.obj, hdiload.exe, stan1220.fnt*/
#include     /*заголовок для функций обращения к DOS */
#include      /*заголовок для функций работы с файлами*/
#include 
#include  /*заголовок для функ-й управлен. памятью*/
#include  /*заголовок для функций обработки строк */
#include  /*интерфейс дисплейного адаптера */
#define FONTFILE_NAME "STAN1220.FNT"
#define COLOR_WHITE    3
#define MESSAGE        "Hello, Display Adapter 8514/A!"
#define MAX_STR        40
HOPEN_DATA   open_data  ={ 3,0,0 }
HCLOSE_DATA  close_data ={ 2,0 }
HSCS_DATA    font       ={ 4,0 }
/* Описание локальных функций */
struct CharSetDef  *LoadFont(char *);
int                 main(void);
/* Локальные функции */
struct CharSetDef  *LoadFont(fileName);
char *fileName;    /* имя файла, содержащего шрифт */
   word fontlen;
   struct FontFileDefn *ioaddr;
   int f_id;
   struct CharSetDef *a_csd;
   /* Попытка открытия файла, содержащего шрифт. Если файл
      не может быть открыт, возвращается признак ошибки */
   if ((f_id = open (fileName,O_RDONLY | O_BINARY)) == -1)
     return NULL;
   /* Определение размера файла шрифта, выделение буфера и
      чтение в него файла. Если буфер не может быть выделен,
      возвращается признак ошибки */
   fontlen = (int)lseek(f_id,0L,2);
   if (!(ioaddr = (struct FontFileDefn *)malloc(fontlen)))
     return NULL;
   lseek(f_id,0L,0); /* переход на начало файла */
   read(f_id,(char *)ioaddr,fontlen);
   /* Помещение в таблицу определения шрифта адреса начала
      загруженного шрифта */
   a_csd = (struct CharSetDef *)(((char *)ioaddr) +
           ioaddr->page_array[ioaddr->def_page].csd_offset);
   a_csd->chardef1=((char far *)ioaddr+((long)a_csd->chardef1);
   a_csd->chardef2=((char far *)ioaddr+((long)a_csd->chardef2);
   a_csd->chardef3=((char far *)ioaddr+((long)a_csd->chardef3);
   a_csd->indextbl = (int far *)
              (((byte far *)ioaddr)+((long)a_csd->indextbl));
   a_csd->enveltbl=(char far *)ioaddr)+(long)a_csd->enveltbl));
   /* Закрытие файла и возврат адреса */
   close(f_id);
   return a_csd;
   }
                            - 19 -
int main()
   {
   HINIT_DATA            taskState;
   HQDPS_DATA            stateBufferInfo;
   HQMODE_DATA           modeData;
   HSCOL_DATA            textcolor;
   HCHST_DATA(MAX_STR)   drawString;
   int                   retVal;
   int                   messageHeight, messageWidth;
   union REGS            inregs, outregs;
   struct SREGS          segregs;
   /* Проверка наличия программного интерфейса адаптера */
   if (getafi() == NULL)
     {
     printf ("Please run HDILOAD to install the interface.\n");
     return 1;
     }
   /* Программы интерфейса загружены, производится обращение  к
      адаптеру и проверяется результат обращения к нему */
   HOPEN(&open_data);    /* Открытие интерфейса */
   if (open_data.iflags) /* в случае ошибки */
     {
     printf("Adapter Open error:%X\n",open_data.iflags;
     return 1;
     }
   /* Выделение буфера состояния задачи. Данные в этот буфер
      записываются при вызове HINIT и должны быть помещены
      туда независимо от того будет или не будет производиться
      переключение режимов адаптера */
   stateBufferInfo.length = 6; /* Размер буфера */
   HQDPS(stateBufferInfo);
   /* Информационный блок буфера состояния теперь содержит
      размер буфера состояния задачи для функции HINIT. Т.к.
      программе HINIT в качестве указателя передается только
      сегментный адрес, она предполагает, что смещение буфера
      в этом сегменте равно 0 */
   inregs.h.ah = 0x48;  /* Выделение сегмента */
   inregs.x.bx = stateBufferInfo.size;
   intdos(&inregs,&outregs);
   taskState.segment = outregs.x.ax;
   taskState.length = 2;  /* Длина сегментного указателя */
   HINIT(&taskState);     /* Инициализация адаптера */
   modeData.length = 18;  /* Режим по умолчанию */
   HQMODE(&modeData);
   /* Все установки сделаны. Все это стандартные действия,
      которые должны быть выполнены в любой прикладной
      программе, взаимодействующей с 8514/A. Теперь будет
      загружен шрифт и выведено сообщение на экран.
      Используется стандартный шрифт 12 x 20, поставляемый
      с программами интерфейса */
    if (!(font.address = LoadFont(FONTFILE_NAME)))
      {
       printf("Font file %s could not be loaded!\n",
                                            FONTFILE_NAME);
                            - 20 -
       retVal = 1;
       }
     else
       {
       textColor.length = 4;
       textColor.index  = COLOR_WHITE;
       HSCOL(&textColor);  /* Символы выводятся белым цветом*/
       font.length = 4;
       HCSC(&font);    /* Установка шрифта */
       /* Далее выполняются необходимые вычисления для того,
          чтобы вывести сообщение в центре экрана с учетом
          размера символов */
       messagHeights = font.address->cellheight;
       messagWidth = font.address->cellwidth*strlen(MESSAGE);
       /* Вывод строки */
       drawString.coord.x_coord = (modeData.width
                                          - messageWidth) / 2;
       drawString.coord.y_coord = (modeData.heights
                                         - messageHeight) / 2;
       drawString.length = sizeof(coord_pr) + strlen(MESSAGE);
       strcpy(drawString.string,MESSAGE);
       HCHST (&drawString);
       retVal = 0;
       }
     getch();
     /* Освобождение буфера и закрытие адаптера */
     inregs.h.ah = 0x49;
     segregs.es = taskState.segment;
     int86x(0x21,&inregs,&outregs,&segregs);
     HCLOSE(&close_data);    /* эакрыть интерфейс адаптера */
     return(0);
     }


Яндекс цитирования