Жанр: Учеба

Программно-аппаратная организация компьютера IBM PC

сторінка №16

рого говоря, монохромный дисплей имеет два цвета:
зеленовато-фосфорный и черный. Зеленовато-фосфорный (белый) цвет
соответствует свечению люминофора, а черный цвет свидетельствует об
отсутствии свечения. Любая возможная комбинация цветов очертания и фона в
случае монохромного дисплея изображена на экране в виде зеленоватого
символа на черном фоне.
Стандартный набор признаков в случае монохромного дисплея
обеспечивает режим отображения такой же как и в случае цветного
графического дисплея, а именно: белые символы (кодовая комбинация разрядов
цветности 111) на черном фоне (кодовая комбинация разрядов цветности 000);
исключение составляют три особых случая. Любой код цветности ( за
исключением трех случаев рассматриваемых ниже) вызывает последствия,
аналогичные стандартному набору признаков, т.е. свечение зеленоватых
символов на черном фоне.
Два из трех особых случаев, представляются более или менее
очевидными. Если кодовая комбинация признаков соответствует режиму
отображения "черное-на черном" (т.е. все разряды цветности находятся в
нулевом состоянии), то любой отображаемый символ становится невидимым.
Если же кодовая комбинация признаков соответствует режиму отображения
"черное-на-белом" (разряды очертания хранят код 000, а фоновые разряды -
код 111), то имеет место так называемое обратное или реверсное изображение
(черные символы на зеленовато-фосфорном фоне). Здесь имеется полная
аналогия с цветным дисплеем, когда черный символ на черном фоне
неразличим, а изображение черного символа на белом фоне называется
обратным. Вполне естественно ожидать, что четвертая комбинация признаков,
соответствующая режиму белый символ на белом фоне, порождает невидимые
символы. Однако, фирма IBM пошла другим путем. В случае монохромного
дисплея комбинация признаков байта атрибутов, соответствующая режиму белый
символ на белом фоне, фактически сводится к использованию стандартного
формата изображения зеленоватых символов на черном фоне (аналогично тому,
как то происходит в случае всех остальных комбинаций цветовых признаков).
И последний аспект представления информации на экране монохромного
дисплея связан с возможностью подчеркивания. Фирма IBM предлагает своим
пользователям монохромный дисплей, обладающий возможностью подчеркивания
символов. В терминах признаков цветности подчеркивание представляется в
виде синего очертания (код цветности 001) и черного фона (код цветности
000). Собственно цветной графический адаптер не предусматривает реализации
функции подчеркивания, однако сам факт использования синих символов на
черном фоне создает впечатление некоторого акцентирования.
Поскольку монохромный дисплей допускает представление обратных
изображений и реализует функцию подчеркивания, можно ожидать, что
допустимо их сочетание в рамках одного кадра. Однако это не так. Цветовые
комбинации, которые можно было бы здесь использовать (синий символ на
белом фоне или черный символ на синем фоне), интерпретируется системой как
стандартные, ничем не отличающиеся от других цветовых комбинаций.

8.6. Особенности воспроизведения цвета

В данном параграфе мы рассмотрим различные особенности
воспроизведения цвета на цветном видеомониторе, снабженном цветным
графическим адаптером. Следует иметь в виду, что черно-белый монитор с
цветным графическим адаптером цвет не воспроизводит. Здесь следует также
отметить, что многие широко распространенные черно-белые мониторы не
корректно воспринимают сигналы цветного изображения, поэтому информация,
содержащая цветовые компоненты и выводимая на черно-белый монитор, может
оказаться искаженной или невидимой.
Теоретически цветной дисплей компьютера IBM/PC воспроизводит
шестнадцать различных цветов. Это число получается следующим образом.
Во-первых, имеется восемь различных цветовых сочетаний, образуемых тремя
основными цветами - красным, зеленым и синим. Во-вторых, любой цвет
очертания символа может быть воспроизведен в двух режимах; в режиме
нормальной и в режиме повышенной яркости (цвет высокой интенсивности).
Управление этими режимами осуществляется с помощью бита интенсивности.
Таким образом, допускается воспроизведение шестнадцати цветов при
отображении очертания символа и восьми цветов при отображении фона.
(Графический режим, который будет рассмотрен в следующей главе также
допускает использование шестнадцати цветов, однако особенности их
использования для очертания символа и его фона существенно отличаются).
Все шестнадцать цветов на практике никогда не используются. Один из
восьми основных цветов - черный; в связи с этим неясно, что такое черный
цвет повышенной яркости. Фирма IBM называет этот цвет темно серым. В
принципе этот цвет можно воспроизвести на экране цветного дисплея, однако
делается это весьма редко. Таким образом, количество цветов уменьшается до
пятнадцати. Если же учитывать, что не все цветные мониторы используют бит
яркости, то количество воспроизводимых цветов ограничивается только
основными. Фактически это число еще меньше - только семь - поскольку
черный цвет используется редко.

Ниже приводятся все шестнадцать комбинаций цветов, обеспечиваемых
4-мя разрядами, включающими разряд яркости или повышенной интенсивности
свечения.

________________________________________________________________
Яркость Красный Зеленый Синий Номер Цвет Примечание
________________________________________________________________

0 0 0 0 0 Черный !Изображение
!отсутствует
0 0 0 1 1 Синий !
0 0 1 0 2 Зеленый !
0 0 1 1 3 Циан !Сине-зеленый
0 1 0 0 4 Красный !
0 1 0 1 5 Пурпурный !Светло-
!пурпурный,
!состоящий
!из красного
!и синего
0 1 1 0 6 Коричневый!Темно-желтый;
!для
!большинства
!дисплеев -
!желтый
0 1 1 1 7 Светло- !Обычный белый
серый !
1 0 0 0 8 Темно- !Черный,
серый !повышенной
!яркости (!?)
1 0 0 1 9 Светло- !
синий !
1 0 1 0 10 Светло- !
зеленый !
1 0 1 1 11 Циан !Сине-зеленый,
светлый !светлый
1 1 0 0 12 Светло- !
красный !
1 1 0 1 13 Светло- !
пурпурный !
1 1 1 0 14 Желтый !Светло-желтый
1 1 1 1 15 Белый !Белый,
!повышенной
!яркости
________________________________________________________________

В столбце "номер" указывается числовое обозначение цвета,
используемое в языке Бейсик. Числа от 16 до 31 служат для обозначения тех
же цветов, что и числа от 0 до 15, число 16 добавляется для установки
атрибута мерцания.
Для формирования у пользователя более строгого представления об
использовании цвета в программах, приведем здесь краткие сведения о
цветовых возможностях видеомонитора.
Каждый пользователь должен отдавать себе отчет в особенностях
воспроизведения цвета повышенной интенсивности. Такие цвета как циан и
пурпурный зрительно могут восприниматься как более интенсивные, но
поскольку они вдвое ярче основных цветов (красного, зеленого и синего), то
они воспринимаются сравнительно блеклыми. Напомним здесь, что яркость -
это количество испускаемого света. Количество света еще не говорит о
насыщенности цвета - чаще всего это говорит о размытости цвета. В то же
время в отношении желтого цвета справедливо следующее утверждение - чем
ярче цвет, тем выше его насыщенность (интенсивность). Желтый цвет, подобно
красному, зеленому и синему представляет особый цвет.
Комфортность восприятия цвета меняется в зависимости от качества
экрана дисплея и от специфики реакции глаза. Большинство пользователей,
как нам представляется, считают, что синий, красный, желтый и, возможно,
черный относятся к ортогональным цветам, обеспечивающим наибольшую
комфортность восприятия. Следующими (на шкале комфортности восприятия)
цветами являются зеленый и пурпурный. И последними в списке наиболее
комфортных цветов являются циан и белый.
Каждый, кто имеет серьезные намерения в отношении цветовых
возможностей IBM/PC должен довольно внимательно отнестись к выбору цвета и
(по возможности) проверить свои решения на нескольких экранах различных
типов. Неверный выбор может осложнить восприятие информации с экрана
дисплея.

8.7. Режим прямого управления видеомонитором

Существует два основных способа отображения информации на экране
компьютера IBM/PC.
Первый способ, который я буду называть косвенным, состоит в
использовании копии изображения, хранящейся в памяти дисплея. Фирма IBM,
однако относится к этому способу неодобрительно. В первой редакции
руководства по программированию этот способ рассматривается как образец
"дурного тона" в программировании, поскольку программы становятся
зависимыми от аппаратных особенностей IBM/PC. В случае замены типа дисплея
(что является вполне реальным,(см. параграф 8.2) или какой-либо иной
аппаратной модификации пользовательские программы подлежат модификации.
Наиболее эффективный способ генерации изображения на экране дисплея
состоит в использовании функций обслуживания BIOS; в этом случае при любых
модификациях компьютера (либо для последующих моделей IBM/PC)
фирмы-изготовители позаботятся о внесении соответствующих изменений в BIOS
с тем, чтобы пользовательские программы остались неизменными. Следует
однако отметить, что функции обслуживания BIOS-ПЗУ, ориентированные на
работу с дисплеями, не вполне корректны; я даже считаю их малопригодными.
Во многом это объясняется тем, что любая мало-мальски серьезная программа
обходит их и работает непосредственно с памятью дисплея, хранящей
изображение. В отличие от точки зрения фирмы IBM на "дурной тон" в
программировании, я считаю что использование памяти дисплея, хранящей
кодированную копию изображения, вполне обоснованным решением в случае
потребности получения быстрых и сложных изображений. Генерация изображения
на экране дисплея с помощью адекватного образа памяти обладает огромными
преимуществами. Изображение формируется быстро, непосредственно и весьма
эффективно. Процесс генерации протекает достаточно просто. Программа,
приведенная в приложении 8.1, иллюстрирует особенности реализации этого
процесса на языке Бейсик, а текст программы приложения 8.2 содержит ряд
процедур обслуживания, предназначенных для прямого обмена с памятью
дисплея программ, написанных на языке Паскаль. Эти процедуры могут
использоваться в качестве базиса для любых программ обмена с дисплеем,
написанных на Паскале, или большинстве других языков.
Принцип работы таких программ весьма прост - во-первых, программе
необходимо сообщить тип дисплея - монохромный или цветной. Это можно
сделать двумя способами: либо путем опроса пользователя (программа в
процессе своей настройки задает пользователю прямой вопрос), либо путем
опроса операционной системы (программа в этом случае получает доступ к
внутренним таблицам операционной системы, содержащим сведения о типах
устройств).
Используя функцию обслуживания BIOS-ПЗУ (рассматривается в разделе
8.11), можно получить информацию о типе используемого дисплея. Это
наиболее эффективный способ настройки программ.
После определения типа дисплея необходимо сформировать ссылку
(указатель) на соответствующий участок памяти; в случае монохромного
адаптера это адрес шестнадцатеричного параграфа B000, а случае цветного
графического адаптера - B800. В рамках языка Бейсика это можно осуществить
с помощью оператора DEF SEG.В Паскале это делается с помощью
сегментированных типов. Любой из названных способов осуществим весьма
просто.
Поскольку пользователь имеет возможность обращаться к памяти дисплея,
то тем самым у него появляется возможность с одной стороны отображать на
экране нужную ему информацию, а с другой стороны он имеет возможность
считать то, что уже отображено.
Единственное возникающее при этом осложнение - относительная
адресация. Пользователь обязан учитывать наличие байтов-атрибутов
(размещаются по нечетным адресам); если необходимо принимать в расчет
разбивку экрана на строки, то программы должны выполнить соответствующие
вычисления. Если используется страничный механизм дисплея, то следует так
же учитывать особенности размещения страниц его адреса кратным 2К и 4К.
В приложении 8.2 приведены наиболее распространенные модули,
требуемые для программирования на Паскале. Если возникает потребность в
дополнительных модулях, то они могут быть легко добавлены к существующим
по уже известной схеме (см. приложение 8.2).

8.8. Управление курсором

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

Рассмотрим некоторые альтернативные варианты.
В связи с использованием мерцающего курсора возникает ряд проблем
чисто зрительного восприятия. Компьютер IBM/PC имеет курсор стандартной
формы, появляющиеся на экране при включении компьютера в электрическую
сеть; это небольшое мерцающее пятно, расположенное ниже позиции символа.
Некоторые считают, что такой курсор трудно отыскать на экране, заполненном
информацией .
Существует возможность увеличить размер курсора, доведя его до
размера символа. В качестве образца процедуры увеличения размера курсора
до половины размера символа следует запустить интерпретатор с языка Бейсик
и нажать клавишу Insert (Вставка). С помощью оператора LOCATE можно
установить любой размер курсора. Но при этом оказывается, что большой
мерцающий курсор действует на глаз утомляюще, особенно при длительной
работе.
Мерцающий курсор можно использовать двумя способами. Первый способ
связан с использованием атрибута обратного изображения (шестнадцатеричный
код 70) в отношении той позиции экрана, в которой находится курсор. В этом
случае генерируется большое световое пятно, на фоне которого виден символ;
таким образом, возникает сплошной (имеющий размер символа) немерцающий
курсор. Курсор такого типа хорошо воспринимается в зрительном плане и не
действует утомляюще на глаз. В тех случаях, когда Бейсик работает с
цветным графическим монитором в графическом режиме, оказывается, что
курсор генерируется сходным образом. Объясняется это тем, что графический
режим не предусматривает аппаратной реализации мерцающего курсора, поэтому
Бейсик вынужден имитировать курсор. Но даже в тех случаях, когда
предусмотрен мерцающий курсор, реверсивное изображение считается наилучшим
способом представления курсора (здесь уместно заметить, что текстовый
редактор, использованный при подготовке рукописи этой книги (Vedit), имеет
именно такой курсор).
Второй способ использования курсора особенно уместен, когда программа
выводит на экран перечни (списки) каких-либо информационных объектов.
Назначение курсора состоит не только в фиксации на экране позиции
табуляции (позиции размещения символа), но также и в реализации процедуры
выбора. Последнее характерно для программ обработки меню, списков файлов и
вообще наборов альтернативных вариантов. Для таких случаев я бы предложил
использовать два символа "стрелки", именно CHR$(16) для стрелки,
направленной вправо, и CHR$(17) для стрелки, направленной влево. (Входящая
в состав пакета программ, прилагаемого к данной книге, программа DiskLook,
а также многие другие программы из числа "Нортон Ютилити" используют
правую стрелку).
Если задача генерации искусственного курсора не стоит, то задача
управления курсором практически возникает всегда. Впрочем, в случае
искусственного создания курсора может возникнуть потребность вообще убрать
его с экрана. Курсор обладает двумя характеристиками, подлежащими
управлению: размером и позицией.
В случае аппаратно-генерируемого курсора он представляется в виде
совокупности мерцающих строк из числа строк развертки, генерирующих
отображаемый символ. Поскольку строки, из которых он состоит, не могут
управляться независимо, то у пользователя имеется возможность управлять
лишь группой мерцающих строк. Монохромный дисплей имеет 13 строк
развертки, а цветной графический - 7. Принято нумеровать строки сверху,
начиная с 0 и вплоть до 13 (для монохромного дисплея) или до 7 (для
цветного дисплея). Стандартное положение курсора (в момент запуска IBM/PC)
- 12 и 13-я строки для монохромного дисплея и 7-я строка для цветного
графического дисплея.
Пользователь имеет возможность задать положение курсора путем
выделения произвольного количества этих строк, указав начальный и конечный
номер строк развертки. Курсор, таким образом, может быть полноразмерным
или занимать верхнюю, среднюю и нижнюю часть позиции символа.
Если номер начальной строки больше номера конечной строки (например:
начальная строка имеет номер 12, а конечная строка номер 2), то курсор
будет образован следующим образом: используются строки развертки,
начинающиеся с начальной строки вплоть до конечной строки, а затем берутся
самые верхние строки, вплоть до конечной строки. Таким образом,
генерируется курсор весьма причудливой формы, состоящий из двух частей -
верхней и нижней. Это весьма необычная конструкция, и у Вас может
возникнуть желание посмотреть на нее; я бы, однако, рекомендовал хорошо
подумать, прежде чем предлагать такое решение пользователям Ваших
программ.
При необходимости генерации составного курсора следует запустить
интерпретатор языка Бейсик и ввести команду

LOCATE ,,, 6,2

В результате на экране появится составной курсор и могут быть
выполнены действия по модификации его размеров. Вторым управляемым
параметром курсора является его местоположение. Курсор может быть
расположен в любой строке или столбце экрана дисплея, кроме того, его
можно скрыть, поместив в несуществующую строку 26. С помощью оператора
LOCATE (язык Бейсик) можно управлять обоими параметрами. Для остальных
языков это не так. Многие пользователи языка Паскаль считают, что
отсутствие средств управления курсором является серьезным недостатком
данной версии языка.

На дискете, прилагаемой к данной книге, содержатся процедуры,
написанные на языке ассемблера; с помощью этих процедур может быть
осуществлен доступ к курсору или реализовано управление им в рамках языка
Паскаль или любого другого языка. Особенности реализации этих процедур
описаны в параграфе 8.11; там же приведены и другие сведения, касающиеся
обращения к BIOS-ПЗУ для видеодоступа.

8.9. Стандартный режим управления видеомонитором

Стандартный (или штатный) режим доступа к информации предполагает,
что генерация изображений осуществляется без модификации содержимого
участка памяти, хранящего закодированный образ экрана. В параграфе 8.11
будет рассмотрена возможность такого доступа, используя функции
обслуживания BIOS-ПЗУ. В связи с этим мне все-таки неясно, почему все
стремятся использовать именно функции обслуживания (исключение составляют
пользователи, работающие на ассемблере), несмотря на то, что средства
вывода языков высокого уровня (Паскаль и другие) обладают явными
преимуществами.
В случае использования средств вывода языков высокого уровня (Паскаль
и другие) возникает одна особенность. Вывод информации всегда
осуществляется с учетом положения курсора. Поэтому, если производится
манипулирование курсором с помощью функций обслуживания BIOS-ПЗУ,
описываемых в параграфе 8.11, то это вполне согласится со спецификой
работы средств вывода языков высокого уровня.
Таким образом, всегда следует придерживаться разумного сочетания двух
основополагающих принципов работы: использование средств вывода базового
языка программирования и достижения на этой основе высокого уровня
контроля отображаемых данных и отказ от непосредственного использования
кодированного образа экрана в памяти дисплея.
Придерживаясь этих концепций, можно достичь высокого уровня контроля
за отображаемой информацией (в первую очередь это относится к атрибутам
отображения); это может служить хорошей основой для построения
высокомобильных систем программного обеспечения для персональных
компьютеров.

8.10. Псевдографический режим

Символьная графика, или псевдографика представляет собой интересную и
эффективную альтернативу использованию полномасштабных графических
возможностей цветного графического дисплея.Программы, написанные в расчете
на использование псевдографических возможностей имеют важное преимущество,
они не зависят от типа используемого дисплея (черно-белый или цветной
графический).
Под псевдографическими изображениями понимаются такие изображения,
которые создаются на базе расширенного символьного набора кода ASCII.
Следом за стандартными символами ASCII (первые 128 символов) расположены
еще 128 символов, имеющих особую конфигурацию. Примерно половина этих
символов предназначена для представления чертежей и рисунков.
Прежде всего речь идет о прямых. В ASCII предусмотрен полный набор
символов, позволяющих вычерчивать контуры прямоугольников, диаграмм и схем
одиночными и двойными линиями. Многие программы для IBM/PC, включая
демонстрационные программы, написанные на Бейсике и поставляемые в составе
DOS, используют символы прямых, поэтому многим они знакомы.

8.11 Средства управления видеотерминалом уровня BIOS-ПЗУ

Ниже описываются функции обслуживания видеомонитора, реализуемые
средствами BIOS-ПЗУ. Ряд этих функций относится к графическим режимам,
которые будут детально рассмотрены в следующей главе; здесь мы опишем их
лишь вкратце.
Существует категория читателей, которые непосредственно не будет
использовать функции обслуживания, им важно понимать принципы и
возможности системы.
BIOS-ПЗУ предлагает пользователю шестнадцать различных функций
обслуживания для видеомониторов. Доступ к этим функциям осуществляется
через прерывание с номером 16(10/16). В данном параграфе мы рассмотрим все
эти прерывания и осмыслим их назначение. Программы 8.101 и 8.102,
расположенные на дискете, прилагаемой к данной книге, представляют собой
процедуры, написанные на языке ассемблера (процедуры первого уровня), для
обращения к функциям обслуживания видеодисплея, реализуемым с помощью
BIOS-ПЗУ; кроме того, они содержат определения Паскаля и процедуры второго
уровня, предназначенные для облегчения использования первых.
Первая процедура обслуживания видеомонитора имеет код обслуживания 0,
она используется для фиксации режима работы видеомонитора. Возможны восемь
различных режимов работы видеомонитора, причем семь режимов ориентированы
на цветной графический дисплей, а один на монохромный. Ниже приводится
список режимов работы (в дальнейшем мы прокомментируем позиции этого
списка).


____________________________________________________________

Код Режим
____________________________________________________________

0 Текстовый, 40-позиционный, черно-белый (цвет
подавлен) режим для цветного графического дисплея
1 Текстовый, 40-позиционный, цветной режим для
цветного графического дисплея
2 Текстовый, 80-позиционный, черно-белый (цвет
подавлен) режим для цветного графического дисплея
3 Текстовый, 80-позиционный, цветной режим для
цветного графического дисплея
4 Графический, 320 х 200 пикселей, цветной режим
для цветного графического дисплея
6 Графический, 640 х 200 пикселей, черно-белый режим
для цветного графического дисплея

Список сторінок

Поділитися у соцмережах

☏ Замовлення реклами: +3805044-68-872

© Асоціація електронних бібліотек України

☝ Усі матеріали сайту (зокрема статті, зображення, рекламні оголошення тощо) призначені лише для попереднього ознайомлення. Усі права на публікації, представлені на сайті, належать їхнім законним власникам. Просимо Вас не зберігати копії інформації.